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

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

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

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

你的想法不错。

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

然后,要通知此线程的更改,您可以使用“Observer”设计模式 。

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

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

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

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

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

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

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