`

Java捕捉文件变化方法(转)

    博客分类:
  • Java
 
阅读更多
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.concurrent.TimeUnit;

import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;

public class FileMonitorTest {
	
	static long pos = 0;

	public static void main(String[] args) throws Exception {
		// 监控目录
		String rootDir = "E:\\";
		// 轮询间隔 5 秒
		long interval = TimeUnit.SECONDS.toMillis(5);
		//
		FileAlterationObserver observer = new FileAlterationObserver(rootDir, FileFilterUtils.and(
				FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter(".java")), null);
		observer.addListener(new MyFileListener());
		FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);
		// 开始监控
		monitor.start();
	}

}

class MyFileListener extends FileAlterationListenerAdaptor {
	@Override
	public void onFileCreate(File file) {
		System.out.println("[新建]:" + file.getAbsolutePath());
	}

	@Override
	public void onFileChange(File file) {
		System.out.println("[修改]:" + file.getAbsolutePath());
		try {
			RandomAccessFile random = new RandomAccessFile(file, "r");
			
			if (FileMonitorTest.pos == 0) {
				FileMonitorTest.pos = random.length();
			}
			
			random.seek(FileMonitorTest.pos);
			String line;
			while((line = random.readLine()) != null) {
				System.out.println(line);
			}
			FileMonitorTest.pos = random.getFilePointer();
			random.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void onFileDelete(File file) {
		System.out.println("[删除]:" + file.getAbsolutePath());
	}
}

 

分享到:
评论
1 楼 ddwla4 2013-02-19  
谢谢。分享

相关推荐

    java jdk实列宝典 光盘源代码

    捕捉屏幕相当于键盘上的PrintScreen,CsreenCaputure.java; 缩放图片JPGTransforme.java; 2d图形,实现一个2d画板,能够画2d的线、圆和矩形,能指定图形的颜色并且能够撤销和恢复图形,command.java; 3d图形,Graphic...

    java 面试题 总结

    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 13、sleep() 和 wait() 有什么区别? sleep是线程类(Thread)的...

    超级有影响力霸气的Java面试题大全文档

    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 16、sleep() 和 wait() 有什么区别? sleep是线程类(Thread)...

    《javaScrip开发技术大全》源代码

    • sample43.htm 监视属性值的变化情况 第10章(\代码\第10章) • sample01.htm 直接调用函数 • sample02.htm 将函数返回值赋值给对象属性 • sample03.htm 将函数的返回值作为...

    SQLServer2008查询性能优化 2/2

    2.7.8 创建多个文件和文件组 36 2.7.9 将表和索引放在不同的磁盘上 39 2.7.10 将日志文件保存到独立的物理磁盘 39 2.7.11 表的分区 40 2.8 处理器瓶颈分析 40 2.8.1 % Processor Time 41 2.8.2 % Privileged ...

    SQLServer2008查询性能优化 1/2

    2.7.8 创建多个文件和文件组 36 2.7.9 将表和索引放在不同的磁盘上 39 2.7.10 将日志文件保存到独立的物理磁盘 39 2.7.11 表的分区 40 2.8 处理器瓶颈分析 40 2.8.1 % Processor Time 41 2.8.2 % Privileged ...

    toad for oracle 11

    用户可以同时编辑多个文件,包括 SQL、PL/SQL、HTML、Java 和纯文本文件。图形化用户界面提供了快速易用、可灵活配置的开发环境。 SQL Editor 提供热键、自动纠错和预录入功能,以提高编码速度 Bookmark 功能便于...

    Google Android SDK开发范例大全(第3版) 1/5

    5.29 模拟文件下载Notification进度变化与关闭 5.30 取得已安装应用程序列表与安装日期信息 5.31 造假的Toast画面 5.32 剪贴簿管理器 第6章 手机自动服务纪实 6.1 您有一条短信pop up提醒 6.2 手机电池计量还剩多少 ...

    Google Android SDK开发范例大全(第3版) 4/5

    5.29 模拟文件下载Notification进度变化与关闭 5.30 取得已安装应用程序列表与安装日期信息 5.31 造假的Toast画面 5.32 剪贴簿管理器 第6章 手机自动服务纪实 6.1 您有一条短信pop up提醒 6.2 手机电池计量还剩多少 ...

    Google Android SDK开发范例大全(第3版) 3/5

    5.29 模拟文件下载Notification进度变化与关闭 5.30 取得已安装应用程序列表与安装日期信息 5.31 造假的Toast画面 5.32 剪贴簿管理器 第6章 手机自动服务纪实 6.1 您有一条短信pop up提醒 6.2 手机电池计量还剩多少 ...

    Google Android SDK开发范例大全(第3版) 5/5

    5.29 模拟文件下载Notification进度变化与关闭 5.30 取得已安装应用程序列表与安装日期信息 5.31 造假的Toast画面 5.32 剪贴簿管理器 第6章 手机自动服务纪实 6.1 您有一条短信pop up提醒 6.2 手机电池计量还剩多少 ...

    PHPWeb开发技术指南——pdf格式

    9.11.3 处理数目变化的变量/选项参数 238 9.11.4 访问变量 240 9.11.5 处理参考变量传递的参数 243 9.11.6 为其他参数确保写安全 245 9.12 创建变量 246 9.12.1 概述 246 9.12.2 长(整)型 249 9.12.3 双精度(浮点...

    PHP4.0 高级篇

    9.11.3 处理数目变化的变量/选项参数 238 9.11.4 访问变量 240 9.11.5 处理参考变量传递的参数 243 9.11.6 为其他参数确保写安全 245 9.12 创建变量 246 9.12.1 概述 246 9.12.2 长(整)型 249 9.12.3 双精度(浮点...

    华报智能报表工具

    目前提供语言版本包括:Delphi,VS.Net C#,Java。 帮助文档:微软标准CHM帮助文件,帮助开发人员对ReportAll进行学习。  在ReportAll报表设计器中,该文档可以提供上下文敏感的帮助信息。 范例:一些使用Report...

    CourseraDailySelfie:Coursera 同行评估项目

    Coursera每日自拍Coursera 同行评估项目目标: 从头开始创建一个... 随着时间的推移,用户将捕捉到许多自拍照,因此将能够看到他或她在一段时间内的变化。 截屏视频:http: Lab-DailySelfie.pdf 文件中的所有详细信息

Global site tag (gtag.js) - Google Analytics