检查目录树中的任何文件是否已更改的最快方法是什么?

时间:2011-03-23 22:16:05

标签: c++ file search last-modified

目前,我正在检查树中每个文件的修改文件时间(来自fstat的st_mtime)的XOR校验和。我将这与所找到的文件数量和文件大小校验和(允许溢出)相结合是安全的,但我很偏执,这可能会导致最极端病态的误报。

我正在考虑的一个替代(安全)选项是按名称和文件内容的CRC32保留每个文件的清单。然而,这个选项相当缓慢,或者比我想要的速度慢很多(比如数千个)。

所以问题是,您可能有哪些提示或技巧来确定目录树中是否有任何文件发生了变化?我想避免逐字节比较,而不会牺牲太多的可靠性。

非常感谢你的建议。

1 个答案:

答案 0 :(得分:3)

您可以使用文件具有的“上次修改时间”属性(无论平台如何)。

只需存储历史值并根据当前值检查历史值。

boost :: filesystem有一个很棒的跨平台API来读取这个值。

编辑:具体看看: http://www.pdc.kth.se/training/Talks/C++/boost/libs/filesystem/doc/operations.htm#last_write_time