我正在编写一个应用程序,在该应用程序中,我使用 WatchService(http://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html )监视来自外部程序的日志文件)。每当在文件上触发 EVENT_MODIFIED 时,我都会读取它并检查是否存在某个字符串。当我手动输入文本并保存文件时,我的程序工作正常,但是当外部程序编辑日志文件时,不会触发 WatchService。
我尝试了一种不同的方法,我使用一个线程读取文件并休眠一段时间,然后重复。这可以解决问题,但我宁愿不要每隔 X 秒轮询一次文件,因为应该可以“监听”更改。
有谁知道为什么 WatchServices 没有检测到这些修改?