java - 监视服务/删除/文件或目录?

标签 java java-7

我想检测一个文件或目录是否被删除。显然我不能对文件使用 Files.isDirectory(Path) 和等效项,因为文件/目录已被删除。

我考虑过使用两个 WatchService 实例来监视文件更改或目录更改,然后我始终知道它是文件还是目录。遗憾的是我找不到合适的方法。

编辑:我认为任何其他关于检查文件名与目录的字符串表示形式的解决方案都容易出错。

最佳答案

在您正在观看的目录中保留一份元数据的本地副本 - 从简单的条目列表以及每个条目是文件还是目录,以及删除后您可能感兴趣的任何其他属性 - 例如大小或上次修改时间。然后,您可以在收到删除通知后查阅此元数据。

您可以在开始监视循环时填充此元数据存储 - 并使用 ENTRY_CREATE 和 ENTRY_MODIFY 扩展您的监视程序,以便在监视目录时进行其他更改时使您的元数据存储保持最新。

当然,这不会没有一些额外的内存开销来保存这些数据,但对于大多数用例来说,它应该是微不足道的。

关于java - 监视服务/删除/文件或目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202226/

相关文章:

java - Hadoop MapFile阅读器未在分布式缓存中检测到文件

java - 在webapp中优雅地关闭ExecutorService?

java - 借助小程序运行网页中的普通Jar文件

java - jdk7 watch service API中,什么时候会抛出OVERFLOW事件?

java - HashSet 和多线程

java - 为什么 getWindow() 无法解决?

java - 如何将 javaFX 14 应用程序导出为 IntelliJ 中的可执行文件?

java - GWT Junit Ant 警告 : multiple versions of ant detected in path for junit

java - The Java Tutorials Translucent Window example 是否会给那些玩 jdk7 的人带来麻烦?

java - 返回 Spring MVC Post 请求的 JSON 响应