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