Я кэширую некоторую информацию из файла, и я хочу иметь возможность периодически проверять, был ли изменен контент файла, чтобы я мог снова прочитать файл, чтобы получить новый контент, если это необходимо.
Вот почему мне интересно, есть ли способ получить время последнего изменения файла в C ++.
Для этого не существует конкретного языка, однако ОС предоставляет необходимые функции. В системе Unix stat
Функция — это то, что вам нужно. Есть эквивалент _stat
функция предусмотрена для окон под Visual Studio.
Итак, вот код, который будет работать для обоих:
#include <sys/types.h>
#include <sys/stat.h>
#ifndef WIN32
#include <unistd.h>
#endif
#ifdef WIN32
#define stat _stat
#endif
auto filename = "/path/to/file";
struct stat result;
if(stat(filename.c_str(), &result)==0)
{
auto mod_time = result.st_mtime;
...
}
Вы можете использовать буст last_write_time
для этого. Boost кроссплатформенный.
Вотэто учебная ссылка для этого.
Преимущество Boost заключается в том, что он работает со всеми видами имен файлов, поэтому он заботится о не-ASCII именах файлов.