Folder Watcher如何在JDK 7中工作?

时间:2012-07-26 10:54:35

标签: java operating-system directory subdirectory java-7

我正在开发一个Java应用程序,我需要查看文件夹中是否显示新文件或新文件夹。我的问题是Folder Watcher只监听文件夹树中第一级的修改,我需要查看是否在树结构的所有子文件夹中创建了新文件夹。我的想法是将文件夹观察者放在我的所有子文件夹中。我不知道这是多么有效,因为我不知道是什么原因导致文件被创建|删除|修改。我希望操作系统发出一个事件,即在文件系统中创建了一个新文件,并以某种方式对JVM进行了一些调用。我猜是正确的吗?因为我需要一种有效的方法来知道我的文件夹结构中已经创建了一个文件。

1 个答案:

答案 0 :(得分:3)

JavaDoc of WatchService说:

  

从文件系统中观察事件的实现旨在直接映射到可用的本机文件事件通知工具,或者在本机工具不可用时使用原始机制(如轮询)。

换句话说:如果操作系统提供了一种有效的方法来实现它,那么VM应该使用这种方式,如果操作系统不提供这种方式,那么更简单(但更昂贵)的轮询机制是使用

话虽这么说,大多数现代操作系统都有必要的文件监视API,但它们的具体实现有所不同。一些允许观看整个子树,而另一些则只观察一个级别(如Java API那样)。这也可能是WatcherService默认只监视一级深度的原因。