我按照Java7 nio2教程中的“监视目录变化”指南,使用代码示例WatchDir.java递归监视整个目录的内容。
虽然这在Linux和Mac上运行良好,但在Windows上(测试过Vista和7),尝试使用Windows Explorer删除嵌套的、被监视的文件夹时,如果嵌套目录中存在文件,则会失败,并出现类似于“访问被拒绝:您需要权限才能执行此操作”的消息。
例如,如果我在Windows中监视一个嵌套的文件夹树:
-- Folder A
-- Folder A1
-- File F
当我尝试删除文件夹A时,出现了拒绝访问的错误。但是,如果我这样做:
- 先删除文件夹A1,然后再删除文件夹A
- 删除文件F,然后再删除文件夹A
有没有一种方法可以使用nio2 WatchService递归地监视嵌套目录,但不会像程序访问嵌套文件那样操作它们?