我希望在文件系统中更改文件时收到通知.我找到的只是一个调查lastModified File属性的线程,显然这个解决方案不是最优的.
我以前写了一个日志文件监视器,我发现轮询单个文件的属性(每秒几次)对系统性能的影响实际上非常小.
Java 7作为NIO.2的一部分添加了WatchService API
WatchService API专为需要通知文件更改事件的应用程序而设计.
我使用Apache Commons的VFS API,这是一个如何监视文件而不会对性能产生太大影响的示例:
DefaultFileMonitor
有一个名为jnotify的lib 在linux 上包含inotify,并且还支持windows.从来没有使用它,我不知道它有多好,但值得一试,我会说.
在低级别,对此实用程序进行建模的唯一方法是在目录上进行线程轮询并密切关注文件的属性.但是您可以使用模式为这样的实用程序开发适配器.
例如,像Tomcat这样的j2ee应用程序服务器具有自动加载功能,只要部署描述符更改或servlet类更改,应用程序就会重新启动.
您可以使用来自此类服务器的库,因为tomcat的大多数代码都是可重用的和开源的.
Java commons-io有一个FileAlterationObserver.它与FileAlterationMonitor结合进行轮询.类似于公共VFS.优点是它具有更少的依赖性.
编辑:较少的依赖关系不是真的,它们对于VFS是可选的.但它使用java File而不是VFS抽象层.