C++: Как изменить временную метку "созданного" файла?
Мне нужно изменить метки времени создания (если есть), изменения и доступа к файлу. В идеале это было бы независимое от платформы решение.
Я осмотрел библиотеки наддува, но не вижу ничего актуального. Самое близкое, что я нашел к чему-то актуальному, это для Windows.
Кто-нибудь может помочь? Благодарю.
4 ответа
Я никогда не использовал их, но я думаю, что вы ищете функции атрибутов:
http://www.boost.org/doc/libs/1_44_0/libs/filesystem/v2/doc/reference.html
Есть также функции для последней модификации:
template <class Path> std::time_t last_write_time(const Path& p);
template <class Path> void last_write_time(const Path& p, const std::time_t new_time);
Использовать utime
функция и utimbuf
структура. Метод доступен в Windows, но назван с подчеркиванием _utime
,
Обновить: utime
только позволяет изменить время доступа и модификации (через utimbuf
"s actime
а также modtime
поля). Скорее всего, это связано с тем, что многие файловые системы в стиле Unix нигде не записывают время создания.
Не все популярные файловые системы поддерживают "созданные" и "доступные" временные метки: http://en.wikipedia.org/wiki/Comparison_of_file_systems
Файловые системы Windows делают, но, возможно, не стоит полагаться на них сейчас, если вам нужна переносимость. Глядя на эту таблицу, у меня складывается впечатление, что существует тенденция добавлять поддержку для них в новых файловых системах.