Java:文件重命名检测

Posted

技术标签:

【中文标题】Java:文件重命名检测【英文标题】:Java: File Renaming Detection 【发布时间】:2011-10-28 20:33:41 【问题描述】:

有没有办法使用 Java 检测文件重命名? (NIO 的 WatchService API 或任何其他) 从我在重命名文件时看到的情况来看,发生了两个单独的事件 - ENTRY_DELETE,然后是 ENTRY_CREATE。

【问题讨论】:

【参考方案1】:

看看jpathwatch。除了在 Java 7 (ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY) 中指定的标准监视事件类型之外,它还具有称为 ENTRY_RENAME_FROMENTRY_RENAME_TO 的附加事件,这些事件将在文件重命名时触发。请注意,这取决于底层操作系统是否支持文件重命名事件。

【讨论】:

【参考方案2】:

检测文件重命名不能移植。因为,看起来令人惊讶的是,文件 HAS-A 名称是不可移植的。大多数 Unix 文件系统允许文件具有任意数量的关联名称(包括零名称)。在 Unix (POSIX) 世界中,重命名意味着添加一个新名称,然后删除原来的名称。

【讨论】:

【参考方案3】:

我认为jnotify 在您的情况下会很有用。

【讨论】:

以上是关于Java:文件重命名检测的主要内容,如果未能解决你的问题,请参考以下文章

git 检测您的 Java 项目中的重命名/移动效果不佳 - 该怎么办?

git:重命名文件并更改文件内容

关于 java 重命名文件夹的问题?

带有重命名检测的 git show 文件(相当于 git log --follow)

java如何重命名所有包名

封装一个文件上传并检测安全性重命名的脚本