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

Другой, немного более простой фрагмент кода для Windows.

Использовать utime функция и utimbuf структура. Метод доступен в Windows, но назван с подчеркиванием _utime,

Обновить: utime только позволяет изменить время доступа и модификации (через utimbuf "s actime а также modtime поля). Скорее всего, это связано с тем, что многие файловые системы в стиле Unix нигде не записывают время создания.

Не все популярные файловые системы поддерживают "созданные" и "доступные" временные метки: http://en.wikipedia.org/wiki/Comparison_of_file_systems

Файловые системы Windows делают, но, возможно, не стоит полагаться на них сейчас, если вам нужна переносимость. Глядя на эту таблицу, у меня складывается впечатление, что существует тенденция добавлять поддержку для них в новых файловых системах.

Другие вопросы по тегам