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