在Windows上测试。查看文件夹a
中的更改。当我将关注的文件夹a
重命名为b
时,WatchService
仍然跟踪更改。问题是a
已经不存在了。(Path)event.context()
返回关注文件夹的相对路径。所以您现在正在观看a
文件夹和文件abc.txt
的更改。但实际上它被放在文件夹b
中。
如何获得更改文件的正确绝对路径?
我已经在Windows 7上确认了您的问题。更改(监视的)目录名后,会报告事件,以便使用原始目录名解析关联的文件名。使用jpathwatch时也是如此:http://jpathwatch.wordpress.com/或https://sourceforge.net/projects/jpathwatch/
通常,您正在观察一个"已知"或"预期"目录,如"/myDropBox",该目录不应更改名称。看起来,如果您期望被监视的目录可能会更改其名称,那么您还需要注册其父目录。然后,您将看到原始名称的"delete"事件和新名称的"create"事件。