Почему я не могу изменить «время последней записи» моих вновь созданных файлов?

Прежде всего, я использую реализацию Visual Files 2015 библиотеки файловой системы из будущего стандарта C ++ 17, который основан на Boost :: Filesystem.

По сути, я пытаюсь сохранить метку времени файла (это «время последней записи»), скопировать содержимое этого файла в архив вместе с указанной меткой времени, затем извлечь этот файл обратно и использовать сохраненную метку времени, чтобы восстановить правильную "время последней записи".

// 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)));

Проблема в том, что новый файл всегда будет иметь временную метку, равную времени его создания (прямо сейчас), как я его никогда не называлlast_write_time() совсем.

Когда я пытаюсь скопировать метку времени из одного существующего файла в другой, он работает нормально. Когда я копирую метку времени из файла, затем используюfs::copy чтобы создать новую копию этого файла, а затем сразу изменить метку времени копии, он также работает нормально. Следующий код работает правильно:

// 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)));

У меня нет причин подозревать, что сохранение метки времени может быть неправильным, но у меня нет других идей. Что может быть причиной этого?

Ответы на вопрос(1)

Ваш ответ на вопрос