我想实现某些文件的实时重新加载。我假设有可能以某种方式读取文件的最后修改时间。这可以与我上次加载该文件的时间进行比较。我会把后者留在记忆中。
如何确定文件自给定时间以来是否被修改?该解决方案应该适用于 Windows、Mac 和 Linux。
更新:似乎我的问题引起了一些误解。为了清楚起见,我想知道是否总体上修改了文件。使用最后修改的时间正是我首先想到的,但我对任何其他解决方案持开放态度!不幸的是,我无法打开每个文件并比较其内容,因为我们谈论的是视频游戏的所有纹理。
我想实现某些文件的实时重新加载。我假设有可能以某种方式读取文件的最后修改时间。这可以与我上次加载该文件的时间进行比较。我会把后者留在记忆中。
如何确定文件自给定时间以来是否被修改?该解决方案应该适用于 Windows、Mac 和 Linux。
更新:似乎我的问题引起了一些误解。为了清楚起见,我想知道是否总体上修改了文件。使用最后修改的时间正是我首先想到的,但我对任何其他解决方案持开放态度!不幸的是,我无法打开每个文件并比较其内容,因为我们谈论的是视频游戏的所有纹理。
看看Boost.FileSystem,std::time_t last_write_time(const path&)
. 免责声明:我不确定这个概念的便携性如何
文件系统问题通常取决于操作系统。每个操作系统都有系统调用和/或库函数来访问这些信息。在 Windows 上有GetFileTime
-function,Unix/Linux 提供stat
,它也应该适用于 Mac。也许 Java 提供了一些东西,但是仅使用标准库很难实现其他任何东西。谷歌是你最好的朋友。
QFileInfo 类提供与系统无关的文件信息。
QDateTime QFileInfo::lastModified () const
返回上次修改文件的日期和时间。
应该是相当可移植的,因为这就是 Qt 的全部想法。正式支持 Windows、MacOS 和 Linux。
使用stat
或fstat
系统调用。它们产生一个struct stat
包含修改时间的结构st_atimespec
。
另一种解决方案是在 Linux 上使用 inotify,或者如果你在 Windows 上,这可能会有所帮助吗?