我可以在Java 7中创建多少个newWatchService?

时间:2012-05-24 02:14:53

标签: java-7 watchservice

我可以制作多少个newWatchService?

try{
    for(Path path : PathList) {
        watcher = path.getFileSystem().newWatchService();
    } catch (IOException e) {
        log.error(e);
    }
}

- >结果:IOExeption:打开文件太多了......

1 个答案:

答案 0 :(得分:0)

我认为你应该只创建一个观察者服务,但注册[m]任何路径。

根据Oracle docs(the document)给出的示例,只创建了一个监视服务,作为WatchDir类的成员变量。注意" this.watcher"

public class WatchDir {

    private final WatchService watcher;

班上其他地方......

 /**
 * Creates a WatchService and registers the given directory
  */
WatchDir(Path dir, boolean recursive) throws IOException {
    this.watcher = FileSystems.getDefault().newWatchService();

相同的服务用于递归地注册给定文件夹中的所有路径。

最后,注册发生在这里......

/**
 * Register the given directory with the WatchService
 */
private void register(Path dir) throws IOException {
    WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);