是否可以使用java代码监控文件夹?

时间:2010-09-28 08:03:10

标签: java monitoring


有没有人知道如何使用java监控文件夹?或者任何人都可以给我一个指示,我怎么能开始这个。这是我的想法。

  

启动一个线程来扫描文件夹更改,这可能是创建,删除,更新此文件夹中的文件或其他事情发生,如上次更新。
  但在这种情况下,你必须控制线程循环。如果这个线程循环控制不好,那么这将浪费cpu并可能导致致命的问题。

或者,是否有任何框架或一些演示代码来执行此操作?希望我们能找到更好的方法来做到这一点。非常感谢你。

4 个答案:

答案 0 :(得分:13)

JDK7的java.nio.file包有一个WatchService来支持文件更改通知。您可以使用它来监视目录以进行更改。这使用可用的本机设施,否则它使用原始机制,如轮询。 Here是一个帖子。

目前,您可以尝试jpathwatch,它是WatchService接口的一个实现,并使用本机操作系统功能,而不是轮询。

答案 1 :(得分:1)

你的想法不错。

要监视java中的文件夹,通常的方法是使用循环在单独的线程中控制它。 为了节省CPU,您可以使用速度(每n秒检查一次)。

然后,要通知此线程的更改,您可以使用"Observer" design pattern

答案 2 :(得分:1)

纯Java方法是分离出一个轮询目录并跟踪变化的线程。

更有效的方法是编写一个特定于操作系统的库(您可能必须在C或C ++中完成),它可以使用特定于操作系统的工具来获取通知(通过回调到Java代码中),以及通过JNI调用它

答案 3 :(得分:0)

不,不是。有些库正在为您进行轮询,例如:

http://mindprod.com/jgloss/filemonitor.html免费且http://www.teamdev.com/jxfilewatcher不免费

理想情况下,您希望避免轮询并立即通知更改。为此,需要特定于操作系统的JNI代码挂钩到本机文件系统。这也需要高权限。