为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测文件是否已重命名?

如何检测文件是否已重命名?

牧羊人nacy 2022-06-23 08:54:04
我目前正在用Java实现我自己的 WatchService API 版本。(你可以参考这个例子 来了解文件WatchService的作用。)我已经为以下情况实现了代码:每当在目录或其子目录中创建文件时。每当从目录或其子目录中删除文件时。每当在目录或其子目录中修改文件时。(基于文件最后修改日期的比较)我面临一个问题,每当重命名文件时,我不明白如何跟踪它。此链接包含我的代码的高级要点:单击此处每当重命名文件时,我都会得到 2 个结果文件删除: {旧文件名}文件添加: {新文件名}但我想要的实际结果是:文件重命名:从{旧文件名}到{新文件名}我该如何应对这个挑战?我提供了一个伪代码(我认为这足以理解手头的问题),如果需要,我也可以提供整个代码:)
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

JNotify支持JNotify.FILE_RENAMED事件。据我了解,这是本机inotify API的包装器,它可以在系统级别捕获文件重命名(更改名称而不更改文件描述符)。



查看完整回答
反对 回复 2022-06-23
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

每当重命名文件时,观察者服务都会生成删除 + 创建事件。您应该了解如何将这两个事件合并为重命名事件。

您可以创建一个唯一 ID 并将其分配给文件。请参阅此链接。每当您在文件上看到创建事件并且它已经有一些 id 时,这意味着它被重命名,否则它是新创建的。对于新创建的文件,您应该设置随机唯一 ID 以跟踪重命名事件。


查看完整回答
反对 回复 2022-06-23
?
MYYA

TA贡献1868条经验 获得超4个赞

您可以为每个文件存储哈希。当您检测到某些文件被删除并添加了一些比较哈希值时,如果它们匹配,您会发现重命名/移动的文件。



查看完整回答
反对 回复 2022-06-23
  • 3 回答
  • 0 关注
  • 267 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信