我想通过java监控系统中所选目录的更改。我对java 7中的 watchservice 有点了解。但是watchservice只返回发生更改事件(MODIFY,DELETE)的目录名。 另一方面,我希望所有有关更改的信息,例如进行更改的用户,发生更改的时间等。
这就像是想在NTFS文件系统上阅读更改日志。 Java中是否还有其他方法可以异步记录此类更改? ...
提前致谢。
答案 0 :(得分:3)
不确定您是否有能力将导入库添加到项目中,但是commons-io有一个FileAlterationObserver可以满足您的需求:
http://commons.apache.org/io/api-release/org/apache/commons/io/monitor/FileAlterationObserver.html
答案 1 :(得分:3)
如果您使用的是java7,请查看 java.nio.file.FileSystem 和 WatchService
有关详细信息,请参阅 Oracle tutorial
答案 2 :(得分:0)
如果您只是想在事情发生时收到通知,可以使用答案中张贴的其中一个库。
如果您想自己使用一个小例子(并且仅限于Windows),请查看此article about Java Native Interface。使用ReadDirectoryChanges函数,您可以决定接收异步通知。
如果你真的需要知道世界卫生组织做出了那些改变那么......祝你好运!对于我所知道的(仅适用于Windows),这不是一个简单的主题,因为Windows不保存该信息。你可以通过Object Auditing通过JNI获得它,但是你必须启用它,它会让你的系统慢一点。有关详细信息,请查看this post。
答案 3 :(得分:0)
您可能会发现Event Programming Example: Google Guava EventBus and Java 7 WatchService有用。我也试图进行异步文件监视,并且很可能会使用它的一些衍生物。
或者,如果您愿意跳过WatchService的直接管理,请提供Camel file endopoint a try。