1

我的 java 程序需要知道文本文件内容是否更改。目前我正在使用File.lastModified()方法来做到这一点,但理想情况下我不想执行检查。相反,我希望每次修改文件时触发一个事件。是否有任何第三方库可用于此类事情?我听说可以使用它来完成,apache file descriptors但找不到任何有关它的信息。

4

4 回答 4

2

您可以使用新的Java 7 WatchService完成此操作。这使您能够查看目录并收到有关创建、修改和删除事件的通知。

于 2013-08-29T10:02:29.567 回答
2

有许多因素可能会决定您的解决方案。文件更新的频率、信息的类型等...

我的建议是 Java 7 标准或 Apache 事实标准(如果要求不允许 Java 7 解决方案)...


阿帕奇配置

如果它是一种属性信息、配置的文件,那么您可能需要查看 Apache commons 配置。每次更新文件时都会提供一种刷新方法,以重新加载您的配置等。http://commons.apache.org/proper/commons-configuration/userguide/howto_events.html#An_example


Java 7,监视服务

如果您使用 Java 7,请查看 WatchService,链接http://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html


阿帕奇 IO

如果您不想使用 Java 7,并且该文件不是配置(最好使用 commons 配置),那么您可能需要查看来自 Apache io 的 FileAlterationObserver。http://commons.apache.org/proper/commons-io/

于 2013-08-29T10:06:42.900 回答
1

试试 Apache 的DefaultFileMonitor

您需要做的就是将有问题的文件添加到需要监控的文件列表中并启动监控线程。

如果文件已被更改或删除,它将触发 OnChange 事件。

于 2013-08-29T10:12:05.047 回答
0

谷歌说你可以使用JNotifyinotify-java之类的库

于 2013-08-29T10:06:02.927 回答