我在这里写的主要是关于从哪里开始的建议。我已经实现了一个类,该类将使用Java的WatchService递归监视目录。它可以很好地检测更改,但是我注意到了一个致命的缺陷:我无法删除包含正在监视的目录的正在监视的目录。这似乎是WatchService的限制。
我还稍微研究了Apache的VFS FileListener,但是在花了大约6个小时的时间来围绕它构建某种包装之前,我想也许我只是问那些比我知识渊博的人。
我需要被监视的目录是完全可操作的,但被监视的根目录不会被删除或重命名。我已经可以使用一个不错的类来监视不会锁定文件或文件夹的文件和目录吗?我试图避免使用轮询/哈希比较方法,但是我越来越觉得我将需要使用该方法并消耗大量的CPU资源。我从哪里开始呢?理想情况下,我需要:
-检测文件和目录的创建-检测文件和目录的删除-检测文件和目录的重命名-检测文件的修改-检测文件在目录之间的移动
我还看到有人认为观察者不可靠,并且他们将两者结合使用(以防观察者在某处发生故障时偶尔进行轮询),但是听起来像是一种真正的痛苦,我宁愿避免,如果不是这样的话无论如何,最好的方法。我有一种感觉,我需要轮询和散列,特别是因为我想检测文件的移动和重命名,但是请告诉我是否存在更好的选项。
在此先感谢您,并为非特定于代码的问题感到抱歉!