【问题标题】:How does Folder Watcher work in JDK 7?文件夹监视程序在 JDK 7 中如何工作?
【发布时间】:2012-07-24 22:44:57
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    JavaDoc of WatchService 是这样说的:

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

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

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

    【讨论】:

    • 那么,在我的所有子文件夹上使用 WatcherService 是最佳选择,还是有更优雅的方法来解决这个问题?
    • 通常,WatcherService 会做它能想到的最聪明的事情。尝试重新发明更智能的实现可能不值得。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多