我的java程序需要知道文本文件内容是否发生了变化。目前我正在使用File.lastModified()
方法来完成它,但理想情况下我不想执行检查。相反,我希望每次修改文件时都会触发一个事件。是否有任何第三方库可用于此类事情?我听说可以使用apache file descriptors
完成,但无法找到有关它的任何信息。
答案 0 :(得分:2)
您可以使用新的Java 7 WatchService来完成此操作。这使您可以观看目录并收到有关创建,修改和删除事件的通知。
答案 1 :(得分:2)
有许多因素可能决定您的解决方案。文件更新的频率,信息的类型等等......
我的建议是Java 7标准,或Apache事实上的标准(如果要求不允许Java 7解决方案)......
Apache配置
如果它是一种属性信息,配置,那么您可能希望查看Apache commons配置。每次更新文件时都会提供刷新方法,重新加载配置等等。http://commons.apache.org/proper/commons-configuration/userguide/howto_events.html#An_example
Java 7,WatchService
如果您使用Java 7,请查看WatchService,链接http://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html
Apache IO
如果您不想使用Java 7,并且该文件不是配置(最好以这种方式使用commons配置),那么您可能希望从Apache io查看FileAlterationObserver。 http://commons.apache.org/proper/commons-io/
答案 2 :(得分:1)
答案 3 :(得分:0)
Google表示您可以使用JNotify和inotify-java
等库