Java Nio2监视服务

Java Nio2监视服务,java,nio2,Java,Nio2,我正在学习nio2中的文件监视程序,一个示例文件有一个映射变量,它们将文件映射到监视键,并有以下代码: for (;;) { // wait for key to be signaled WatchKey key; try { key = watcher.take(); } catch (Interrupt

我正在学习nio2中的文件监视程序,一个示例文件有一个映射变量,它们将文件映射到监视键,并有以下代码:

            for (;;) {

                // wait for key to be signaled
                WatchKey key;
                try {
                   key = watcher.take();
                } catch (InterruptedException x) {
                   return;
                }

                Path dir = keys.get(key);
                if (dir == null) {
                    System.err.println("WatchKey not recognized!!");
                    continue;
                }
                (...)
            }

根据这个例子,我相信watch服务偶尔会给我一个假阳性的密钥,该密钥没有映射到应用程序正在监视的文件,但是在实际情况下,他们不会进行这样的检查。我现在不确定我是否真的需要这本字典。任何有nio2经验的人都能对此有所了解吗?

我真诚地认为,这是确保您仍在处理此监视键/路径映射的事件的最简单方法

如果队列中的同一文件有两个事件。 在处理事件1时,您决定停止处理此路径的事件

在从WatchService中检索下一个键(与事件1相同的路径)之后,您可以立即忽略它并继续