WatchService看起来是一项很棒的技术,但速度太慢,在我测试过的OS X和Linux系统上无法使用。雪上加霜的是,它似乎也没有收到所有事件的通知。
我自己的代码和Oracle的规范示例都是这样。(http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java)
我知道OS X OpenJDK端口不确定该功能(请参阅https://wikis.oracle.com/display/OpenJDK/Mac+OS+X+端口+项目+状态)
有人在生产中成功地使用过这个吗?
如果我更改,我的响应时间会更好
folder.register(watcher, StandardWatchEventKinds.ENTRY_MODIFY);
至
folder.register(watcher, new WatchEvent.Kind[]{StandardWatchEventKinds.ENTRY_MODIFY}, SensitivityWatchEventModifier.HIGH);
有一个适用于Mac的WatchService的本地实现:
http://code.google.com/p/barbarywatchservice/
我自己还没试过用它。