如何使用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