datei/ordner ausschneiden/einfügen

Alles rund um die Programmierung mit Qt
Antworten
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

datei/ordner ausschneiden/einfügen

Beitrag von samsamsam »

hallo,

ich habe bisher eine datei aus einem in einen anderen ordner so verschoben:

Code: Alles auswählen

QString oldPath = "C:/ordner1/test.txt";
QString newPath = "C:/ordner2/test.txt";
if(QFile::copy(oldPath, newPath))
   QFile::remove(oldPath);
allerdings wird da kopiert und gelöscht. das entspricht nicht dem cut&paste, welches viel viel schneller geht.
auch ganze ordner kopieren habe ich ähnlich gemacht: ordner1 in ordner2 verschieben, indem ich im ordner2 den ordner1 mkdir-angelegt habe und alle unterordner von ordner1 ebenfalls erzeugt habe, dann jedes file aus ordner 1 (und seinen unterordnern in den entsprechenden ordner in ordner2 kopiert und dann alle dateien in ordner1 gelöscht, und dann unterordner und ordner1 gelöscht"

gibt es in qt etwas eleganteres, was kein kopieren darstellt sondern lediglich verschieben?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

QFile::rename()?
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Mal was Grundlegendes:
Verschieben IST kopieren und löschen. Die Bits werden an einer neuen Stelle als exakte Kopie der alten Bits gesetzt und die alten gelöscht. Deswegen funktioniert Kopieren generell schneller als Verschieben, da beim Verschieben nicht nur kopiert wird sondern auch noch die alten Daten mit "nichts" überschrieben werden.

Oder wie dachtest du, dass kopieren funktioniert?

Verschieben = Cut & Paste = Copy & Paste & Delete Old ;)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

@exasperation: Hier auf meinem Linux ist mv um WELTEN schneller als cp. Denn ein mv (==move == verschieben) muss nicht die ganzen Bits an eine neue Stelle legen. Wenn die neue Datei auf der selben Partition liegt wie die alte, reicht es einfach die node umzuhängen und fertig. ~Null Kosten.
Von einer Partition auf die andere muss natürlich Kopiert und Gelöscht werden. Aber auch das Löschen ist an minimalen Aufwand gebunden: Einfach node aushängen -> fertig. Wenn der alte Bereich bei einem einfachen rm/mv (mehrfach) überschrieben würde, hätten Datenrecoverytools keine Chance ;)
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Jap da hast du natürlich recht, war etwas voreilig ^^ Was ich geschrieben hab betrifft natürlich nur verschiedene Partitionen, ums genau zu sagen verschiedene Datenträger. ;)
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

hallo Exasperation, hallo franzf,

danke für die schnelle antwort.

gemeint ist, cut&paste von einem ordner zum anderen ordner der selben partition...
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

franzf hat geschrieben:QFile::rename()?
Dürfte das sein, was du suchst
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

qfile::rename() scheint eine lösung für files zu sein. gibt es aber was für das verschieben von ornern in andere ordner? spruch node umhängen?
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

ja hab es ausprobiert.vielen dank.
Antworten