如何使用WatchService查看子目录以进行更改? (JAVA)
我想看一些目录进行更改及其子目录。 我尝试使用WatchService
执行此操作,但我无法知道文件更改的目录。 如何从WatchEvent
检索完整路径?
通常,在启动watchservice时提供文件的目录名称。 这是一个演示如何工作的教程:
http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes
从教程:
Path dir = ...; try { WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); }[.....]
当你收到通知时:
//The filename is the context of the event. WatchEvent ev = (WatchEvent )event; Path filename = ev.context(); Path child = dir.resolve(filename);
对于使用Spring的用户 :
使用Spring 4.2引入WatchServiceDirectoryScanner 。 现在它还可以捕获子目录更改。
有关更多信息,请参阅WatchServiceDirectoryScanner上的Javadoc