如何查明文件是否被修改

How to find out if a file was modified?

本文关键字:修改 是否 文件 何查明      更新时间:2023-10-16

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

我怎样才能知道一个文件在给定的时间内是否被修改过?这个解决方案应该适用于Windows、Mac和Linux。

更新:我的问题似乎引起了一些误解。为了让我的想法更清楚,我想知道一个文件是否被修改了。使用上次修改的时间只是我首先想到的,但我对任何其他解决方案都持开放态度!不幸的是,我无法打开每个文件并比较其内容,因为我们谈论的是电子游戏的所有纹理。

看看Boost。文件系统,std::time_t last_write_time(const path&)。免责声明:我不确定这个概念的可移植性如何

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

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

QDateTime QFileInfo::lastModified () const

返回文件最后修改的日期和时间。

应该是相当可移植的,因为这是Qt的整个想法。Windows, MacOS和Linux是官方支持的。

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

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

在Windows上有类似通知的东西吗?