您现在的位置是:主页 > news > 郑州建设教育培训中心/aso优化技巧大aso技巧
郑州建设教育培训中心/aso优化技巧大aso技巧
admin2025/6/19 9:24:56【news】
简介郑州建设教育培训中心,aso优化技巧大aso技巧,网站关键词代码位置,有网但是网页打不开是什么原因在开发中经常会用到监控文件或是目录的状态,如果你还在手写轮巡扫描文件的话,那你久out了。1. Commons io为我们提供了一套可靠、高性能的一套文件系统监控API1.1. 需要的jar包如下,具体版本可根据自己需要选取:commons-logging-1…
在开发中经常会用到监控文件或是目录的状态,如果你还在手写轮巡扫描文件的话,那你久out了。
1. Commons io为我们提供了一套可靠、高性能的一套文件系统监控API
1.1. 需要的jar包如下,具体版本可根据自己需要选取:
commons-logging-1.1.1.jar
log4j-1.2.15.jar
1.2. 在文件监控系统的中,首先要理解几个角色:
Observer:观察者,拥有文件路径、文件过滤器、文件比较器(监控器用它来判断文件的状态变化:新增、修改、删除、等等),可以向他添加相关的监听器;
Listener:监听器,当文件系统发生变化时,将会执行它的相关方法。其实,在文件状态发生变化时,观察者会根据文件比较器来拿到文件的变化状态,根据变化状态的不同来调用监听器中不同的方法;
Monitor:监控器,可设置监控文件系统的时间间隔、文件观察者等信息。
1.3. 代码实现步骤如下:
1.3.1. 实现监听器
importjava.io.File;importorg.apache.commons.io.monitor.FileAlterationListenerAdaptor;importorg.apache.commons.io.monitor.FileAlterationObserver;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;/*** 文件监听器
*@author@version1.0
* @date 2014-06-30*/
public class MyFileListener extendsFileAlterationListenerAdaptor {private static Log log = LogFactory.getLog(MyFileListener.class);/*** 目录发生变化
*@paramdirectory 发生变化的目录*/@Overridepublic voidonDirectoryChange(File directory) {super.onDirectoryChange(directory);
log.info("文件夹改变:" +directory.getAbsolutePath());
}/*** 新建目录
*@paramdirectory 被新建的目录*/@Overridepublic voidonDirectoryCreate(File directory) {super.onDirectoryCreate(directory);
log.info("新建目录:" +directory.getAbsolutePath());
}/*** 删除目录
*@paramdirectory 被删除目录*/@Overridepublic voidonDirectoryDelete(File directory) {super.onDirectoryDelete(directory);
log.info("删除目录:" +directory.getAbsolutePath());
}/*** 文件发生变化
*@paramfile 发生变化的文件*/@Overridepublic voidonFileChange(File file) {super.onFileChange(file);
log.info("修改文件:" +file.getAbsolutePath());
}/*** 新建文件
*@paramfile 被新建的文件*/@Overridepublic voidonFileCreate(File file) {super.onFileCreate(file);
log.info("新建文件:"+file.getAbsolutePath());
}/*** 删除文件
*@paramfile 被删除的文件*/@Overridepublic voidonFileDelete(File file) {super.onFileDelete(file);
log.info("删除文件:" +file.getAbsolutePath());
}/*** 检查文件开始
*@paramobserver 文件观察者*/@Overridepublic voidonStart(FileAlterationObserver observer) {super.onStart(observer);//log.info("开始检查...");
}/*** 检查文件结束
*@paramobserver 文件观察者*/@Overridepublic voidonStop(FileAlterationObserver observer) {super.onStop(observer);//log.info("结束检查...");
}
}
1.3.2. 观察者、监控器的调用
importorg.apache.commons.io.monitor.FileAlterationMonitor;importorg.apache.commons.io.monitor.FileAlterationObserver;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;/*** 文件系统监测测试类
*@author@version1.0
* @date 2014-06-30*/
public classMain {private static Log log = LogFactory.getLog(Main.class);/*** 测试文件系统监测
*@paramString[] args*/
public static voidmain(String[] args) {long interval = 1000;final String path = "/home/leocook/test";
FileAlterationObserver observer= null;try{
observer= new FileAlterationObserver(path, null, null);//添加监听器
observer.addListener(newMyFileListener());
FileAlterationMonitor monitor= newFileAlterationMonitor(interval, observer);
monitor.start();
}catch(Exception e) {
log.error("Exception", e);
}
}
}
1.4. Commons io包中对文件系统监控体系中,还有类org.apache.commons.io.monitor.FileEntry,关于它的具体用法笔者不再一一介绍。
1.5. 参考链接
http://blog.csdn.net/xiaoyezi1001/article/details/28095281
原文:http://www.cnblogs.com/leocook/p/java_filesystem_monitor.html