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