如何使用WatchService查看子目录以进行更改? (JAVA)

时间:2011-04-09 22:04:04

标签: java watchservice

我想看一些目录进行更改及其子目录。我尝试使用WatchService执行此操作,但我无法知道文件的更改目录。如何从WatchEvent

中检索完整路径

2 个答案:

答案 0 :(得分:2)

通常,您在启动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<Path> ev = (WatchEvent<Path>)event;
   Path filename = ev.context();

   Path child = dir.resolve(filename);

答案 1 :(得分:1)

对于使用Spring的用户

使用Spring 4.2 WatchServiceDirectoryScanner 。现在它还可以捕获子目录更改。

有关详细信息,请Javadocs on WatchServiceDirectoryScanner