Java:检测对文件的修改(文件轮询?)

时间:2010-10-08 18:21:55

标签: java file detection polling last-modified

在Java中检测文件修改的最有效方法是什么?

我已经阅读过有关文件轮询的内容,但是,随着观看文件数量的增加,轮询方法有许多缺点。我宁愿不使用轮询,但在线的一些解决方案似乎指向文件轮询作为推荐的方法。我希望也许是与操作系统相关的文件系统更新回调解决方案 - 这在Linux和Windows中都可能吗?

鉴于我目前只打算“观看”2个文件,我仍然对文件轮询解决方案持开放态度。理想情况下,我希望文件轮询不会对性能产生很大影响。

我知道Java 7的WatchService,但由于7尚未正式发布,我对使用该方法或JNI库犹豫不决。

非常感谢!

编辑:文件轮询似乎是要走的路。如果任何人都可以推荐最安全/最有效的方式来实现文件轮询,那就太棒了。

2 个答案:

答案 0 :(得分:3)

以下是两个可用的库:

Java 7 NIO2也可能有一些东西给你(我不知道这些特征是否适用于Java 7的范围)也可以JSR 203here

答案 1 :(得分:1)

没有Java解决方案让操作系统在文件更改时通知您。可能通过本机调用,但每个操作系统在这方面会有所不同,并且在Java中肯定不支持。它需要大量的JNI自定义编码 - 如果可能的话。

使用轮询解决方案,只要您轮询修改日期,它应该非常快。请确保不要长时间保持对文件的引用。始终在轮询周期之间关闭它们,以确保不会产生冲突。