如何确定文件是否被修改?

时间:2013-03-18 13:29:29

标签: c++ file cross-platform last-modified

我想实现某些文件的实时重新加载。我假设有可能以某种方式读取文件的最后修改时间。这可以与我上次加载该文件时进行比较。我会把后者留在记忆中。

如何确定文件是否在给定时间后被修改?该解决方案应适用于Windows,Mac和Linux。

更新:似乎我的问题引起了一些误解。为了使思考清楚,我要问的是找出一般文件是否被修改过。使用最后修改时间是我首先想到的,但我对任何其他解决方案都持开放态度!不幸的是,我无法打开每个文件并比较它的内容,因为我们讨论的是视频游戏的所有纹理。

5 个答案:

答案 0 :(得分:3)

文件系统问题通常依赖于操作系统。每个操作系统都有系统调用和/或库函数来访问这些信息。在Windows上有GetFileTime - 函数,Unix / Linux提供stat,它也适用于Mac。也许Java提供了一些东西,但只使用标准库很难实现其他任何东西。谷歌是你最好的朋友。

答案 1 :(得分:2)

查看Boost.FileSystemstd::time_t last_write_time(const path&)。免责声明:我不确定这个概念是否便携

答案 2 :(得分:2)

QFileInfo类提供与系统无关的文件信息。

QDateTime QFileInfo::lastModified () const

返回上次修改文件的日期和时间。

应该是相当便携的,因为这是Qt的整个想法。正式支持Windows,MacOS和Linux。

答案 3 :(得分:0)

使用statfstat系统调用。 它们产生struct stat结构,其中包含st_atimespec中的修改时间。

答案 4 :(得分:0)

另一个解决方案是使用inotify for Linux,或者如果你在Windows上,这可能有帮助吗?

Is there anything like inotify on Windows?