QFile.copy - Datum der kopierten Datei
Verfasst: 21. Januar 2011 22:32
Ich möchte einige Dateien kopieren und benutze dazu diese Function:
Als Ergebnis erhalte ich dann ( unter Linux ) Kopien der Originaldateien aber mit dem aktuellen Datum/Zeitstempel. Bei Windows erhält die Kopie den Zeitstempel der Originaldatei.
So setze ich jetzt auch bei Linux den Zeitstempel der Kopie auf den Wert der Originaldatei.
Bei ca. 1-2% der kopierten Dateien erhalte ich (bei setTimeStamp) eine Fehlermeldung entsprechend: "Datei oder Verzeichnis nicht gefunden", obwohl die Datei vorher richtig kopiert wurde.
Da diese Fehlermeldungen nicht immer bei den gleichen Dateien kommen scheint ja sowas wie "fehlende Dateirechte" oder "Sonderzeichen im Dateinamen" hier nicht das Problem zu sein.
Versuchsweise hatte ich völlig erfolglos auch schon ewig lange Wartezeiten zw. Kopieren und Zeitsetzen eingefügt.
Frage1: Gibt es andere Möglichkeiten, die Zeit der Kopie gleich richtig zu setzen?
Frage2: Woher könnte mein Problem kommen? (evtl blockiert QFile.copy noch die Zieldatei)
Zur Info: Ich benutze z.Z. QT4.7 mit Ubuntu10.10
Gruß Sig
Code: Alles auswählen
int copyFile(QString fileName, QString fileDest) {
int result = 0;
QFile *file = new QFile(fileName);
file->copy(fileDest);
result = file->error();
delete file;
return result;
}
So setze ich jetzt auch bei Linux den Zeitstempel der Kopie auf den Wert der Originaldatei.
Code: Alles auswählen
int setTimeStamp(QString strFileName, int timeLastModified, int timeLastRead) {
// Unter Linux erhält eine kopierte Datei immer einen neuen Datumsstempel
// das muss hier korrigiert werden
#ifdef __unix__
const char *fileName = strFileName.toLocal8Bit().data();
struct utimbuf file_time;
file_time.actime = timeLastRead;
file_time.modtime = timeLastModified;
return utime(fileName, &file_time);
#else
// zumindest die WIN-xxx Systeme behalten das Datum bei
// es gibt also nichts zu tun
return 0;
#endif
}
Da diese Fehlermeldungen nicht immer bei den gleichen Dateien kommen scheint ja sowas wie "fehlende Dateirechte" oder "Sonderzeichen im Dateinamen" hier nicht das Problem zu sein.
Versuchsweise hatte ich völlig erfolglos auch schon ewig lange Wartezeiten zw. Kopieren und Zeitsetzen eingefügt.
Frage1: Gibt es andere Möglichkeiten, die Zeit der Kopie gleich richtig zu setzen?
Frage2: Woher könnte mein Problem kommen? (evtl blockiert QFile.copy noch die Zieldatei)
Zur Info: Ich benutze z.Z. QT4.7 mit Ubuntu10.10
Gruß Sig