我正在使用WatchService应用程序工作台的同步数据文件.当我重命名/移动被监视的目录时,我没有得到任何事件,WatchKey也不会变得无效.我仍然从重命名的目录中获取事件,但据我所知,没有办法找出WatchKey的实际路径WatchKey.watchable(),但仍然会返回原始目录路径.我想避免需要锁定监视目录以防止更改,因为我希望尽可能保持应用程序的轻量级.
我在Windows 7上遇到过JDK 7u10的这个问题
您是否知道此问题的任何解决方法而不锁定目录或查看根目录的所有目录?
UPDATE
在Linux上,我观察到了相同的行为.
到目前为止,我现在有三种选择.
1)依靠用户的纪律,他/她不会移动数据目录.我真的不喜欢这个选项,因为它可能会导致未定义的行为.
2)使用更广泛的非标准本机库
3)在高级目录上创建监视程序的层次结构.这些只接受ENTRY_DELETE事件,因为此事件(或OVERFLOW)必须在实际监视目录被移动或删除时出现,因此无效.