通过Java进行文件系统更改监控

时间:2012-04-04 09:23:09

标签: java filesystems java-native-interface jna

我想通过java监控系统中所选目录的更改。我对java 7中的 watchservice 有点了解。但是watchservice只返回发生更改事件(MODIFY,DELETE)的目录名。 另一方面,我希望所有有关更改的信息,例如进行更改的用户,发生更改的时间等。

这就像是想在NTFS文件系统上阅读更改日志。 Java中是否还有其他方法可以异步记录此类更改? ...

提前致谢。

4 个答案:

答案 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