使用Java WatchService监视文件夹中的文件夹

时间:2012-10-15 11:44:06

标签: java nio nio2 watchservice

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

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

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

1 个答案:

答案 0 :(得分:4)

跨平台没有直接支持。对于Windows,有一个ExtendedWatchEventModifier.FILE_TREE将以递归方式查看目录。但是,在Mac或Linux上没有相同的功能。另请注意,ExtendedWatchEventModifier是扩展名,不属于标准定义。

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