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{
	
	@Override
	public void onStart(FileAlterationObserver arg0) {
		System.out.println("begin listening!");
		super.onStart(arg0);
	}
	
	@Override
	public void onStop(FileAlterationObserver arg0) {
		System.out.println("end listening!");
		super.onStop(arg0);
	}
	
	@Override
	public void onDirectoryCreate(File fold) {
		System.out.println("fold: "+fold.getAbsolutePath()+" is created.");
		super.onDirectoryCreate(fold);
	}
	
	@Override
	public void onDirectoryChange(File fold) {
		System.out.println("fold: "+fold.getAbsolutePath()+" is changed.");
		super.onDirectoryChange(fold);
	}
	
	@Override
	public void onDirectoryDelete(File fold) {
		System.out.println("fold: "+fold.getAbsolutePath()+" is deleted.");
		super.onDirectoryDelete(fold);
	}
	
	@Override
	public void onFileCreate(File file) {
		System.out.println("file: "+file.getAbsolutePath()+" is created.");
		super.onFileCreate(file);
	}
	
	@Override
	public void onFileChange(File file) {
		System.out.println("file: "+file.getAbsolutePath()+" is changed.");
		super.onFileChange(file);
	}
	
	@Override
	public 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 {
			//构造观察类主要提供要观察的文件或目录,当然还有详细信息的filter
			FileAlterationObserver 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();
		}
	}
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值