`
jsczxy2
  • 浏览: 1277107 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

java综合学习(二):最新common-io-2.0的新功能之文件监控FileAlteration

    博客分类:
  • java
阅读更多

好吧,最新版的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();
		}
	}
}

 

 

分享到:
评论
3 楼 jiangkeju 2014-03-17  
你好。你的例子很好。但是当我重启服务器的时候,服务器关闭这段时间,文件目录增加了文件,重启应用后,没有发现目录由变化。
2 楼 jiangkeju 2014-03-17  
你好。你的例子很好。但是当我重启服务器的时候,服务器关闭这段时间,文件目录增加了文件,重启应用后,没有发现目录由变化。
1 楼 jiangkeju 2014-03-17  
你好。你的例子很好。但是当我重启服务器的时候,服务器关闭这段时间,文件目录增加了文件,重启应用后,没有发现目录由变化。

相关推荐

    common-io-3.1.1-API文档-中文版.zip

    赠送jar包:common-io-3.1.1.jar; 赠送原API文档:common-io-3.1.1-javadoc.jar; 赠送源代码:common-io-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-io-3.1.1.pom; 包含翻译后的API文档:common-io-...

    commons-pool2-2.0-API文档-中文版.zip

    赠送jar包:commons-pool2-2.0.jar; 赠送原API文档:commons-pool2-2.0-javadoc.jar; 赠送源代码:commons-pool2-2.0-sources.jar; 赠送Maven依赖信息文件:commons-pool2-2.0.pom; 包含翻译后的API文档:...

    common-io-3.1.1-API文档-中英对照版.zip

    赠送jar包:common-io-3.1.1.jar; 赠送原API文档:common-io-3.1.1-javadoc.jar; 赠送源代码:common-io-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-io-3.1.1.pom; 包含翻译后的API文档:common-io-...

    commons-io-2.0.jar

    commons-io-2.0.jar commons-io-2.0.jar commons-io-2.0.jar commons-io-2.0.jar

    weixin-java-common-3.5.0-API文档-中文版.zip

    赠送jar包:weixin-java-common-3.5.0.jar; 赠送原API文档:weixin-java-common-3.5.0-javadoc.jar; 赠送源代码:weixin-java-common-3.5.0-sources.jar; 赠送Maven依赖信息文件:weixin-java-common-3.5.0.pom;...

    commons-io-2.8.0-API文档-中文版.zip

    赠送jar包:commons-io-2.8.0.jar; 赠送原API文档:commons-io-2.8.0-javadoc.jar; 赠送源代码:commons-io-2.8.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.8.0.pom; 包含翻译后的API文档:commons-io...

    commons-lang-2.0.jar

    commons-lang-2.0.jar

    commons-io-2.7-API文档-中文版.zip

    赠送jar包:commons-io-2.7.jar; 赠送原API文档:commons-io-2.7-javadoc.jar; 赠送源代码:commons-io-2.7-sources.jar; 赠送Maven依赖信息文件:commons-io-2.7.pom; 包含翻译后的API文档:commons-io-2.7-...

    Ubuntu关于包依赖关系的学习总结,以安装libgtk2.0-dev包为例.docx

    Ubuntu 关于包依赖关系的学习总结,以安装 libgtk2.0-dev 包为例 在 Ubuntu 系统中,包依赖关系是一个非常重要的概念。 пакет依赖关系是指在安装某个包时,需要同时安装其他依赖包,以便该包能够正常工作。在...

    netty-common-4.1.65.Final-API文档-中英对照版.zip

    赠送jar包:netty-common-4.1.65.Final.jar; 赠送原API文档:netty-common-4.1.65.Final-javadoc.jar; 赠送源代码:netty-common-4.1.65.Final-sources.jar; 赠送Maven依赖信息文件:netty-common-4.1.65.Final....

    weixin-java-common-2.8.0-API文档-中文版.zip

    赠送jar包:weixin-java-common-2.8.0.jar; 赠送原API文档:weixin-java-common-2.8.0-javadoc.jar; 赠送源代码:weixin-java-common-2.8.0-sources.jar; 赠送Maven依赖信息文件:weixin-java-common-2.8.0.pom;...

    java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    在Java Web开发中,文件的上传与下载是常见的功能需求,尤其在构建动态网站或Web应用程序时。本教程将深入讲解如何使用Java Servlet、Apache Commons IO库(版本2.4)以及Apache Commons FileUpload库(版本1.3)来...

    springfox-swagger-common-2.7.0-API文档-中文版.zip

    赠送jar包:springfox-swagger-common-2.7.0.jar; 赠送原API文档:springfox-swagger-common-2.7.0-javadoc.jar; 赠送源代码:springfox-swagger-common-2.7.0-sources.jar; 赠送Maven依赖信息文件:springfox-...

    sentinel-transport-common-1.8.0-API文档-中文版.zip

    赠送jar包:sentinel-transport-common-1.8.0.jar; 赠送原API文档:sentinel-transport-common-1.8.0-javadoc.jar; 赠送源代码:sentinel-transport-common-1.8.0-sources.jar; 赠送Maven依赖信息文件:sentinel-...

    netty-transport-native-unix-common-4.1.73.Final-API文档-中英对照版.zip

    赠送jar包:netty-transport-native-unix-common-4.1.73.Final.jar; 赠送原API文档:netty-transport-native-unix-common-4.1.73.Final-javadoc.jar; 赠送源代码:netty-transport-native-unix-common-4.1.73....

    weixin-java-common-3.5.0-API文档-中英对照版.zip

    赠送jar包:weixin-java-common-3.5.0.jar; 赠送原API文档:weixin-java-common-3.5.0-javadoc.jar; 赠送源代码:weixin-java-common-3.5.0-sources.jar; 赠送Maven依赖信息文件:weixin-java-common-3.5.0.pom;...

    netty-transport-native-unix-common-4.1.74.Final-API文档-中文版.zip

    赠送jar包:netty-transport-native-unix-common-4.1.74.Final.jar; 赠送原API文档:netty-transport-native-unix-common-4.1.74.Final-javadoc.jar; 赠送源代码:netty-transport-native-unix-common-4.1.74....

    commons-io-2.0-src

    通过查看"commons-io-2.0-src"的源代码,我们可以深入学习这些类和方法的实现细节,理解它们如何优化IO操作,以及如何在自己的项目中有效地利用这些工具。同时,源码中的测试类(如`Test*`)提供了丰富的示例,展示...

    commons-io-2.11.0.rar

    Apache Commons IO 是一个Java库,专门用于处理输入/输出(I/O)操作。这个库提供了大量的实用工具类,简化了常见的文件、流、过滤器、读写操作等任务。"commons-io-2.11.0.rar"是Apache Commons IO库的版本2.11.0的...

    nacos-common-2.0.4.RELEASE-API文档-中文版.zip

    赠送jar包:nacos-common-2.0.4.RELEASE.jar; 赠送原API文档:nacos-common-2.0.4.RELEASE-javadoc.jar; 赠送源代码:nacos-common-2.0.4.RELEASE-sources.jar; 赠送Maven依赖信息文件:nacos-common-2.0.4....

Global site tag (gtag.js) - Google Analytics