4

我正在尝试使用 Java 7 的 WatchService 来监控文件夹。我希望它监视添加到使用 WatchService 注册的路径的任何文件或文件夹。

如果我将一个文件夹添加到注册路径,它会正确地将其检测为 ENTRY_CREATE 并在 watchEvent.context() 中返回该文件夹的名称。但是,如果我将一个文件夹添加到该文件夹​​而不是再次检测到它,但 watchEvent.context() 返回相同的文件夹和 ENTRY_MODIFY,因为该文件夹已通过添加另一个文件夹进行了修改。

所以我理解这一点,但不知道我是否应该注册结构中的每个文件夹,或者只注册顶级文件夹并监听或创建和修改

4

1 回答 1

4

跨平台没有直接支持。对于 Windows,有一个ExtendedWatchEventModifier.FILE_TREE将递归地监视目录。但是在 Mac 或 Linux 上没有等效的功能。另外,请注意这ExtendedWatchEventModifier是一个扩展,而不是标准定义的一部分。

你必须听 CREATE 和 DELETE。当创建(删除)的对象是一个目录时,您需要在子目录上添加(删除)一个新的监视。

于 2012-10-15T11:58:40.503 回答