检测文件是否被修改,即使在最后一秒,没有散列?

这适用于Mac,但它也可能适用于Linux,所以我已经标记为这样。

我通过一个目录recursion并获得一个具有文件系统属性的树。

然后每当窗口回到焦点时,我再次recursion(再次,再次)。 当我读取目录时,我正在查找任何已修改的文件,并需要对其执行操作。

我想到的最明显的事情是比较每个文件的修改date,但是我的unit testingcertificate,这是不可靠的,因为testing本身在不到一秒的时间内执行…结果是我的testing更改的文件被认为是未修改的(因为它只准确到1秒)。

到目前为止,我的修复也是比较文件大小,但是这样做的风险在于如果文件被修改了,并且结果的大小是相同的,它也不会被检测到。

远离每个文件散列,这是不可行的(recursion整个目录树太慢),有什么我可以使用HFS / HFS +提供? 像附加到文件的某种版本号/修改计数? 我很害怕,虽然实际上文件边缘情况的变化和我的unit testing一样快,但它们在真实用例中不太可能成为问题。

实时,最小负载的解决方案:

  • Linux: inotify
  • Mac: kqueue

请注意,有关修改时间解析的问题仅针对HFS + 。

最常用的跨平台解决方案是File Alteration Monitor 。

其他链接: