检查目录是否已注册到任何观察者服务?

时间:2016-10-07 10:22:53

标签: java

作为我的应用程序的一部分,我需要将多个目录注册到watcher服务。每当目录发生变化时,我都会收到观察者服务通知。我的要求是,对于给定的目录,是否有任何方法可以知道该目录是否已注册到任何观察者服务?我的意思是,我

Path path = new File("/Users/myDoc").toPath();
WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);

public static boolean isDirectoryRegisteredToAnyWatcherService(Path path){
    //Return true, if this directory is registered to any watcher service, else false.
}

参考

https://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html

1 个答案:

答案 0 :(得分:1)

看一下java.nio.file API我怀疑可以通过标准方法调用来完成。 WatchService对象似乎包含内部名为wdToKey的HashMap中的注册路径;我最好的想法是遍历程序中所有现有的WatchService对象,尝试使用反射检索其内部内容,并检查它们中是否包含相关路径