java综合学习(二):最新common-io-2.0的新功能之文件监控FileAlteration
好吧,最新版的common-io-2.0的新功能初看了下加入了文件监控功能,可能有的时候会遇到。顺便加上注释,直接看代码好了。
?
这部分内容主要有3大类,一个是Monitor类,字面意思就是监控类咯;一个是Observer类,字面意思嘛观察类,用来观察文件的类;一个是listener类,提供各种监听时候的事件处理。
?
就简单点吧,先看了下这几个类的构造函数,非常简单。那我就继承一下好了:
?
package com.xuyi.FileListener;import java.io.File;import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;import org.apache.commons.io.monitor.FileAlterationObserver;public class FileListenerAdaptor extends FileAlterationListenerAdaptor{@Overridepublic void onStart(FileAlterationObserver arg0) {System.out.println("begin listening!");super.onStart(arg0);}@Overridepublic void onStop(FileAlterationObserver arg0) {System.out.println("end listening!");super.onStop(arg0);}@Overridepublic void onDirectoryCreate(File fold) {System.out.println("fold: "+fold.getAbsolutePath()+" is created.");super.onDirectoryCreate(fold);}@Overridepublic void onDirectoryChange(File fold) {System.out.println("fold: "+fold.getAbsolutePath()+" is changed.");super.onDirectoryChange(fold);}@Overridepublic void onDirectoryDelete(File fold) {System.out.println("fold: "+fold.getAbsolutePath()+" is deleted.");super.onDirectoryDelete(fold);}@Overridepublic void onFileCreate(File file) {System.out.println("file: "+file.getAbsolutePath()+" is created.");super.onFileCreate(file);}@Overridepublic void onFileChange(File file) {System.out.println("file: "+file.getAbsolutePath()+" is changed.");super.onFileChange(file);}@Overridepublic void onFileDelete(File file) {System.out.println("file: "+file.getAbsolutePath()+" is deleted");super.onFileDelete(file);}}?
override一下listener类的各个方法,以便自己处理一些功能。
?
接下来一个接口实现一下,很简单,见注释:
?
package com.xuyi.FileListener;import java.io.File;import java.io.FileFilter;public class FileFilterImpl implements FileFilter {/* * (non-Javadoc) * @see java.io.FileFilter#accept(java.io.File) * * return true:返回所有目录下所有文件详细(包含所有子目录);return false:返回主目录下所有文件详细(不包含所有子目录) */public boolean accept(File pathname) {System.out.println("file_filter: "+pathname);return false;}}?
接下来我们可以测试了:
?
package com.xuyi;import java.io.File;import org.apache.commons.io.monitor.FileAlterationMonitor;import org.apache.commons.io.monitor.FileAlterationObserver;import com.xuyi.FileListener.FileFilterImpl;import com.xuyi.FileListener.FileListenerAdaptor;public class Test {public static void main(String[] args) {try {//构造观察类主要提供要观察的文件或目录,当然还有详细信息的filterFileAlterationObserver observer = new FileAlterationObserver(new File("J://1"),new FileFilterImpl());//构造收听类 没啥好说的FileListenerAdaptor listener = new FileListenerAdaptor();//为观察对象添加收听对象observer.addListener(listener);//配置Monitor,第一个参数单位是毫秒,是监听的间隔;第二个参数就是绑定我们之前的观察对象。FileAlterationMonitor fileMonitor = new FileAlterationMonitor(5000,new FileAlterationObserver[]{observer});//启动开始监听fileMonitor.start();} catch (Exception e) {e.printStackTrace();}}}?
?