WatchService / Deletions / 文件还是目录?

9
我想检测文件或目录是否已被删除。显然我不能使用 Files.isDirectory(Path) 和相应的文件函数,因为文件/目录已经被删除了。
我考虑使用两个 WatchService 实例来监视文件更改或目录更改,然后我就知道它是文件还是目录。不幸的是,我找不到适当的方法。
编辑:我认为任何关于检查文件名和目录的字符串表示与其他解决方案都容易出错。

1
你尝试过这个了吗? - home
看不出这有什么帮助(在使用WatchService之前已经阅读过它),但也许我是瞎了?;-) - Johannes
嗯,也许我也没有理解你的问题?您可以注册服务以“侦听”给定目录 - 那有什么问题吗? - home
1个回答

3
在您监视的目录中保留元数据的本地副本 - 仅仅是一个条目列表,以及每个条目是文件还是目录,以及您可能感兴趣的任何其他属性,例如大小或最后修改时间。一旦收到删除通知,您可以查看此元数据。
您可以在启动监视循环时填充此元数据存储,并使用ENTRY_CREATE和ENTRY_MODIFY扩展您的监视器,以便在监视目录时保持元数据存储的最新状态。
尽管需要额外的内存开销来维护这些数据,但对于大多数用例来说,这应该是相当微不足道的。

好主意,但似乎比我的解决方案要多一些开销。唔,我想不出其他的解决方案了。 - Johannes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接