Warum kann ich die 'letzte Schreibzeit' meiner neu erstellten Dateien nicht ändern?

Zunächst verwende ich die Implementierung der Dateisystembibliothek von Visual Studio 2015 aus dem kommenden C ++ 17-Standard, der auf Boost :: Filesystem basiert.

Grundsätzlich versuche ich, den Zeitstempel einer Datei zu speichern (es ist die "letzte Schreibzeit"), den Inhalt dieser Datei zusammen mit dem Zeitstempel in ein Archiv zu kopieren, diese Datei dann wieder zu extrahieren und den gespeicherten Zeitstempel zum Wiederherstellen der Datei zu verwenden korrekte "letzte Schreibzeit".

// Get the file's 'last write time' and convert it into a usable integer.
__int64 timestamp = chrono::time_point_cast<chrono::seconds>(fs::last_write_time(src)).time_since_epoch().count();

// ... (do a bunch of stuff in here)

//  Save the file
ofstream destfile(dest, ios::binary | ios::trunc);
destfile.write(ptr, size);

// Correct the file's 'last write time'
fs::last_w,rite_time(dest, chrono::time_point<chrono::system_clock>(chrono::seconds(timestamp)));

Das Problem ist, dass die neue Datei immer einen Zeitstempel erhält, der der Zeit entspricht, zu der sie erstellt wurde (im Moment), da ich sie nie @ genannt hablast_write_time() überhaupt

Wenn ich versuche, den Zeitstempel von einer vorhandenen Datei in eine andere zu kopieren, funktioniert dies einwandfrei. Wenn ich den Zeitstempel aus einer Datei kopiere, benutze ichfs::copy, um eine neue Kopie dieser Datei zu erstellen, und den Zeitstempel der Kopie sofort zu ändern. Der folgende Code funktioniert ordnungsgemäß:

// Get the file's 'last write time' and convert it into a usable integer.
__int64 timestamp = chrono::time_point_cast<chrono::seconds>(fs::last_write_time("test.txt")).time_since_epoch().count();
fs::copy("test.txt", "new.txt");
// Correct the file's 'last write time'
fs::last_write_time("new.txt", chrono::time_point<chrono::system_clock>(chrono::seconds(timestamp)));

Ich habe keinen Grund zu der Annahme, dass das Speichern des Zeitstempels falsch sein könnte, aber ich habe keine anderen Ideen. Was könnte dies verursachen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage