如何查明文件是否被修改
How to find out if a file was modified?
我想实现某些文件的实时重新加载。我假设可以以某种方式读取文件的最后修改时间。这可以与我上次加载文件的时候进行比较。我会把后者留在记忆中。
我怎样才能知道一个文件在给定的时间内是否被修改过?这个解决方案应该适用于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是官方支持的。
使用stat
或fstat
系统调用。它们产生了一个struct stat
结构,其中包含了st_atimespec
中的修改时间。
另一个解决方案是在Linux上使用inotify,或者如果你在windows上,这可能会有所帮助?
在Windows上有类似通知的东西吗?
相关文章:
- 如果返回 -1,时间() 的参数是否被修改?
- 在 RAII 构造中修改 RVO 值是否安全?
- 特征库是否修改C++语法
- 在擦除或修改作为不同索引键的值时,boost::multi_index 迭代器是否无效?
- 是否可以使用 C11 原子包含 C 标头而无需在C++中进行修改?
- 是否可以禁止在for循环体内部修改循环变量
- 修改数据是否由 const shared_ptr&Ok 传递?
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 非类型引用参数可以在运行时修改,这是否意味着模板可以在运行时实例化?
- c++ 是否提供了一种使整个结构常量(不可修改)的方法?
- 是否允许删除以修改其参数
- C++标准是否保证失败的插入到关联容器中不会修改 rvalue-reference 参数?
- 是否修改其声明语句中的变量定义良好
- 我在代码中收到一个运行时错误,该错误如何通过修改最多一个元素来查找数组是否可以变得不减少
- 当我修改、更改和“删除”原始指针时,是否需要指针副本
- 是否可以安全地修改静态变量
- 是否可以在内存中修改功能
- 如何调试指针参数是否通过函数修改
- 是否有范围::视图::转换的可修改视图版本
- 在c++中,多个线程对数组的不同单元的修改是否安全(boost)