如何使用WatchService监视子目录的更改?(Java)



我想观察一些目录的变化和她的子目录。我试着用WatchService这样做,但我不知道文件是从哪个目录更改的。如何从WatchEvent检索完整路径?

通常在启动watchservice时提供文件的目录名。下面是演示如何工作的教程:

http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes

From the tutorial:

   Path dir = ...;
   try {
       WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
   }[.....]

当你捕捉到一个通知:

   //The filename is the context of the event.
   WatchEvent<Path> ev = (WatchEvent<Path>)event;
   Path filename = ev.context();
   Path child = dir.resolve(filename);

对于使用Spring的用户:

在Spring 4.2 中引入WatchServiceDirectoryScanner。现在它还可以捕获子目录的更改。

更多信息,Javadocs on WatchServiceDirectoryScanner

相关内容

  • 没有找到相关文章

最新更新