3

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

4

1 回答 1

3

JavaDoc 是WatchService这样说的:

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

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

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

于 2012-07-26T11:00:38.807 回答