3

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

我已经阅读了有关文件轮询的信息,但是,轮询方法有许多缺点,随着监视文件数量的增加,这些缺点变得很明显。我宁愿不使用轮询,但许多在线解决方案似乎都将文件轮询作为推荐的方法。我希望可能是一个与操作系统相关的文件系统更新回调解决方案——这在 linux 和 windows 中都可能吗?

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

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

非常感激!

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

4

2 回答 2

3

这里有两个可用的库:

Java 7 NIO2也可能为您提供一些东西(我不知道这些功能目前是否在 Java 7 的范围内)也可以作为JSR 203使用,请参见此处

于 2010-10-08T18:29:43.680 回答
1

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

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

于 2010-10-08T18:25:06.077 回答