我想检测文件或目录是否已被删除。显然我不能使用Files.isDirectory(Path)和文件的等效文件,因为文件/目录已被删除。
我考虑过使用两个WatchService实例来监视文件更改或目录更改,然后我知道它是文件还是目录。可悲的是,我找不到合适的方法。
编辑:我认为关于检查文件名与目录的字符串表示的任何其他解决方案都容易出错。
答案 0 :(得分:3)
将元数据的本地副本保存在您正在观看的目录中 - 从简单的条目列表开始,以及每个条目是文件还是目录,以及您删除后可能感兴趣的任何其他属性 - 例如大小或上次修改时间。然后,您可以在收到删除通知后查阅此元数据。
您可以在启动监视循环时填充此元数据存储 - 并使用ENTRY_CREATE和ENTRY_MODIFY扩展您的观察程序,以便在监视目录时进行其他更改时使元数据存储保持最新。
当然,这将不会在内存中留下一些额外的开销来保留这些数据,但对于大多数用例来说,它应该是无关紧要的。