Я хочу осуществить перезагрузку определенных файлов. Я предполагаю, что можно как-то прочитать время последнего изменения файла. Это можно сравнить с последней загрузкой этого файла. Я бы оставил последнее в памяти.
Как я могу узнать, был ли файл изменен с определенного времени? Решение должно работать на Windows, Mac и Linux.
Обновление: кажется, что мой вопрос вызвал некоторые неправильные толкования. Чтобы прояснить мысли, я прошу выяснить, был ли файл вообще изменен. Использование времени последнего изменения было тем, что мне пришло в голову, но я открыт для любого другого решения! К сожалению, я не могу позволить себе открыть каждый файл и сравнить его содержимое, так как речь идет обо всех текстурах видеоигры.
посмотри на Boost.Filesystem, std::time_t last_write_time(const path&)
, Отказ от ответственности: я не уверен, насколько портативна эта концепция
Проблемы с файловой системой обычно зависят от ОС. Каждая ОС имеет системные вызовы и / или библиотечные функции для доступа к этой информации. На винде есть GetFileTime
Unix / Linux предлагает stat
, который должен работать для Mac тоже. Возможно, Java что-то предлагает, но чего-то еще будет трудно достичь, используя только стандартную библиотеку. Google твой лучший друг.
Класс QFileInfo предоставляет независимую от системы информацию о файле.
QDateTime QFileInfo::lastModified () const
Возвращает дату и время последнего изменения файла.
Должно быть довольно переносимым, так как в этом вся идея Qt. Windows, MacOS и Linux официально поддерживаются.
использование stat
или же fstat
системные вызовы.
Они дают struct stat
структура, которая содержит время модификации в st_atimespec
,
Другим решением было бы использовать inotify для Linux или, если вы используете Windows, может это поможет?