2016-11-09 48 views
1

我从文件缓存一些信息,我希望能够定期检查文件的内容是否已被修改,以便我可以再次读取该文件以获取新内容如果需要的话。C++如何检查文件的最后修改时间

这就是为什么我想知道如果有一种方式来获得C++中的文件的最后修改时间。

+0

好的旧C'stat'调用有什么问题? –

+0

@ Jean-FrançoisFabre,这是一个unix系统调用,所以它不是跨平台的 – SingerOfTheFall

+0

@SingerOfTheFall这就是为什么我没有回答。 –

回答

11

没有特定语言的方式做到这一点:但是操作系统提供所需的功能。

如果您使用的是UNIX系统中,该stat通话是你所需要的。在Visual Studio下有一个为Windows提供的等效_stat调用。因此,这里是代码,将两个工作:

#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文件名。

相关问题