C ++ Как проверить время последнего изменения файла

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

Вот почему мне интересно, есть ли способ получить время последнего изменения файла в C ++.

9

Решение

Для этого не существует конкретного языка, однако ОС предоставляет необходимые функции. В системе 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;
...
}
19

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

Вы можете использовать буст last_write_time для этого. Boost кроссплатформенный.

Вотэто учебная ссылка для этого.

Преимущество Boost заключается в том, что он работает со всеми видами имен файлов, поэтому он заботится о не-ASCII именах файлов.

6

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