Seite 1 von 1

datei/ordner ausschneiden/einfügen

Verfasst: 23. August 2010 12:23
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?

Verfasst: 23. August 2010 12:34
von franzf
QFile::rename()?

Verfasst: 23. August 2010 12:39
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 ;)

Verfasst: 23. August 2010 13:04
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 ;)

Verfasst: 23. August 2010 13:50
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. ;)

Verfasst: 23. August 2010 14:47
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...

Verfasst: 23. August 2010 14:49
von Exasperation
franzf hat geschrieben:QFile::rename()?
Dürfte das sein, was du suchst

Verfasst: 23. August 2010 14:50
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?

Verfasst: 23. August 2010 14:53
von Exasperation

Verfasst: 23. August 2010 14:59
von samsamsam
ja hab es ausprobiert.vielen dank.