我一直在尝试 Java 7 中 WatchService 的一个简单应用程序。它监视目录中的新文件。它在 Linux CentOS 6 上运行。我可以将文件复制到监视目录并获得文件创建事件。都好。
我以 Oracle 示例为基础。
问题是密钥莫名其妙地无效。Javadoc 说有几种情况会导致这种情况,例如取消密钥。我不会取消它。它在程序运行时无效,没有发生文件创建。只是坐在那里,它会在几分钟或更长时间内失效。有一次它运行了四天,然后神秘地失效了。
Javadoc 中唯一可能的解释是监视目录已删除或不再可用。我当然不会删除它。这就留下了可用性。
现在我想知道 WatchService 正在使用的 Linux 实现是否告诉它该目录由于系统负载或其他原因不可用。我无法想象会发生什么。系统并没有真正加载。包含该目录的文件系统是该系统的本地文件系统。该目录不被其他任何东西使用。
还有哪些其他可能性?