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