2016-11-09 8 views
1

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

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

+0

Что случилось с добрым старым звонком '' '' '' '' '' '' '' '' '' '' '? –

+0

@ Jean-FrançoisFabre, это системный вызов unix, поэтому он не является кросс-платформенным – SingerOfTheFall

+0

@SingerOfTheFall, поэтому я не ответил. –

ответ

11

Существует не язык, способный сделать это: однако ОС обеспечивает требуемую функциональность.

Если вы используете систему 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_mtim; 
     ... 
    } 
+0

Так что я ничего не могу использовать, что будет работать как в UNIX, так и в Windows? :/ –

+0

Изменено для добавления поддержки Windows – Smeeheey

3

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

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

У Boost есть то преимущество, что он работает для всех типов имен файлов, поэтому он заботится о именах файлов, отличных от ASCII.

 Смежные вопросы

  • Нет связанных вопросов^_^