Qt C ++: Verschieben einer Datei, Quell- und Zielpfade befinden sich auf unterschiedlichen Laufwerken

8

Ich möchte eine Datei von einem Ordner (etwa Laufwerk C) in einen anderen Ordner (etwa Laufwerk D) in C ++ verschieben. Wenn die Datei bereits im Zielordner vorhanden ist, sollte sie überschrieben werden. Wie kann ich es mit C ++ - Standardbibliotheken oder Qt erreichen?

Ich habe die Methode "rename" gefunden, aber ich bin mir nicht sicher, ob das funktioniert, wenn sich die Pfade auf verschiedenen Laufwerken befinden. Außerdem, was ist die Plattformabhängigkeit?

    
nik_kgp 26.08.2013, 08:09
quelle

1 Antwort

5

Verwenden Sie einfach QFile :: rename () . Für die meisten Zwecke sollte es ungefähr das Richtige tun. Die C ++ - Standardbibliothek hat keinen Inter-Dateisystem-Umbenennungsanruf. Ich denke (korrigiere mich bitte in Kommentaren, wenn ich falsch liege!), std :: rename kann nur innerhalb eines einzelnen Dateisystems verschoben werden.

Allerdings ist normalerweise die einzige (relevante) atomare Dateioperation hier im selben Dateisystem umbenannt, in der Dateiinhalte nicht berührt werden, nur Verzeichnisinformationen ändern sich. Mir ist keine C ++ - Bibliothek bekannt, die dies unterstützt, daher hier ein grober Pseudocode:

%Vor%

Wenn Sie so vorgehen, wird sichergestellt, dass die Datei an einem neuen Ort als ganze Datei auf einmal angezeigt wird, und die schlimmsten Fehlermodi beinhalten das Kopieren der Datei anstelle des Verschiebens.

    
hyde 26.08.2013 10:22
quelle

Tags und Links