che*_*g81 101 java file listener
我希望在文件系统中更改文件时收到通知.我找到的只是一个调查lastModified File属性的线程,显然这个解决方案不是最优的.
Ste*_*nne 112
我以前写了一个日志文件监视器,我发现轮询单个文件的属性(每秒几次)对系统性能的影响实际上非常小.
Java 7作为NIO.2的一部分添加了WatchService API
WatchService API专为需要通知文件更改事件的应用程序而设计.
Rut*_*ani 21
在低级别,对此实用程序进行建模的唯一方法是在目录上进行线程轮询并密切关注文件的属性.但是您可以使用模式为这样的实用程序开发适配器.
例如,像Tomcat这样的j2ee应用程序服务器具有自动加载功能,只要部署描述符更改或servlet类更改,应用程序就会重新启动.
您可以使用来自此类服务器的库,因为tomcat的大多数代码都是可重用的和开源的.
Java commons-io有一个FileAlterationObserver.它与FileAlterationMonitor结合进行轮询.类似于公共VFS.优点是它具有更少的依赖性.
编辑:较少的依赖关系不是真的,它们对于VFS是可选的.但它使用java File而不是VFS抽象层.
小智 5
每次我去读取属性文件时,我都会运行这段代码,只有在自上次读取文件以来它被修改过的情况下才真正读取该文件。希望这可以帮助某人。
private long timeStamp;
private File file;
private boolean isFileUpdated( File file ) {
this.file = file;
this.timeStamp = file.lastModified();
if( this.timeStamp != timeStamp ) {
this.timeStamp = timeStamp;
//Yes, file is updated
return true;
}
//No, file is not updated
return false;
}
Run Code Online (Sandbox Code Playgroud)
Log4J 中使用了类似的方法FileWatchdog。
| 归档时间: |
|
| 查看次数: |
119350 次 |
| 最近记录: |