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

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

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

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

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

非常感激!

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

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

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

这里有两个可用的库:

Java 7 NIO2也可能有一些东西给你(我不知道目前这些function是否在Java 7的范围内)也可以通过JSR 203看到这里