Java WatchService/Detect重命名和/或移动

Java WatchService/Detect重命名和/或移动,java,java-7,Java,Java 7,注意:将INSERT/DELETE替换为来自WatchService的适当事件 关于Java7中的WatchService类,还有一个问题。如何可靠地检测目录/文件的重命名(甚至移动)?更彻底地考虑一下,甚至很难检测到重命名,或者更准确地说,它涉及到许多需要跟踪的状态。我认为检查同一文件/目录标识符的INSERT/DELETE或DELETE/INSERT对是不够的。我认为仅仅记录一个事件是不够的。它还可能干扰文件的其他删除或插入。因此,我所能想到的是一个非常丑陋的启发式方法,用来跟踪唯一标识符,

注意:将INSERT/DELETE替换为来自WatchService的适当事件


关于Java7中的WatchService类,还有一个问题。如何可靠地检测目录/文件的重命名(甚至移动)?更彻底地考虑一下,甚至很难检测到重命名,或者更准确地说,它涉及到许多需要跟踪的状态。我认为检查同一文件/目录标识符的INSERT/DELETE或DELETE/INSERT对是不够的。我认为仅仅记录一个事件是不够的。它还可能干扰文件的其他删除或插入。因此,我所能想到的是一个非常丑陋的启发式方法,用来跟踪唯一标识符,并监视插入和随后的删除,这可能会干扰其他事件或删除/插入。因此,我认为我需要某种超时,在它过期后,只需插入/删除所有跟踪的更改。肯定是容易出错的,或者是检测重命名的最佳方法:-(我认为可以从Linux和Windows获取相关信息(重命名事件),但我目前不打算使用JNI,因为我已经用WatchService实现了所有功能(即使我只花了几天时间).

是您要查找的事件。

是您要查找的事件。

我可以保证您没有测试此事件。重命名时,您将获得一个删除+创建事件,而不是修改。您只获得chmod之类的修改…我可以保证您没有测试此事件。重命名时,您将获得一个删除+创建事件,而不是修改。您只获得Modify f或者像chmod之类的东西。。。