Как узнать, был ли файл изменен?

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

Как я могу узнать, был ли файл изменен с определенного времени? Решение должно работать на Windows, Mac и Linux.

Обновление: кажется, что мой вопрос вызвал некоторые неправильные толкования. Чтобы прояснить мысли, я прошу выяснить, был ли файл вообще изменен. Использование времени последнего изменения было тем, что мне пришло в голову, но я открыт для любого другого решения! К сожалению, я не могу позволить себе открыть каждый файл и сравнить его содержимое, так как речь идет обо всех текстурах видеоигры.

7

Решение

посмотри на Boost.Filesystem, std::time_t last_write_time(const path&), Отказ от ответственности: я не уверен, насколько портативна эта концепция

2

Другие решения

Проблемы с файловой системой обычно зависят от ОС. Каждая ОС имеет системные вызовы и / или библиотечные функции для доступа к этой информации. На винде есть GetFileTimeUnix / Linux предлагает stat, который должен работать для Mac тоже. Возможно, Java что-то предлагает, но чего-то еще будет трудно достичь, используя только стандартную библиотеку. Google твой лучший друг.

3

Класс QFileInfo предоставляет независимую от системы информацию о файле.

QDateTime QFileInfo::lastModified () const

Возвращает дату и время последнего изменения файла.

Должно быть довольно переносимым, так как в этом вся идея Qt. Windows, MacOS и Linux официально поддерживаются.

2

использование stat или же fstat системные вызовы.
Они дают struct stat структура, которая содержит время модификации в st_atimespec,

0

Другим решением было бы использовать inotify для Linux или, если вы используете Windows, может это поможет?

Есть ли что-то вроде inotify в Windows?

0
По вопросам рекламы [email protected]