`

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实现

    在Java编程环境中,实现视频捕捉是一项技术挑战,但可以通过Java Media Framework (JMF) 这一强大的多媒体处理库来轻松解决。JMF 是一个可扩展的平台,它允许开发者处理各种音频、视频流。本教程将详细介绍如何使用...

    文件监控文件监控文件监控文件监控

    总的来说,这个Java实现的文件监控系统提供了一个基础框架,用于在不依赖本地库的情况下监控文件系统变化。虽然存在一些局限性,但对于理解文件监控原理和实践Java编程技巧,它仍然具有一定的学习价值。开发者可以...

    利用JAVA实现复选框捕捉器

    在这个小型实验程序中,我们聚焦于"复选框捕捉器"的实现,它能够捕获用户在复选框中的选择,并将这些信息实时地显示在文本框中,同时还可以将选定的内容保存到指定的文件中。如果目标文件不存在,程序会自动创建新...

    文件动态实时监测增量读取截取JDK1.7版本

    在IT行业中,文件动态实时监测...通过使用JDK1.7提供的API,我们可以高效地跟踪文件变化,及时处理新增数据,从而提升系统的实时性和性能。这个项目不仅是一个学习资源,也是一个可直接应用到实际项目中的解决方案。

    JAVA+FLEX实现摄像头捕捉图像

    在提供的压缩包文件名称"photozhuapai"中,可能包含了实现以上功能的源代码示例,包括JAVA服务器端的处理代码以及FLEX客户端的界面和逻辑代码。分析这些代码可以帮助我们更好地理解JAVA和FLEX如何协作完成摄像头捕捉...

    java jdk实列宝典 光盘源代码

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

    根据输入的路径信息,搜索该路径中的文件目录变化信息。

    这种方式能够实时捕捉到几乎所有的文件变化,提高了效率并降低了资源消耗。 为了实现这个功能,开发者通常需要编写程序来调用这些系统API,创建一个监听器并设置回调函数,以便在发生文件变化时执行特定的操作,如...

    Java聊天程序(私聊+公聊+截图+传送文件)

    【Java聊天程序】是一种基于Java编程语言开发的交互式通信应用,它提供了多种功能,包括私聊、公聊、屏幕截图以及文件传输。这个程序设计的目的是为了实现用户之间的实时交流,增强了网络通信的多样性和便利性。 1....

    javacore实例介绍,可以学到不少

    首先,JavaCore文件通常由操作系统或JVM工具生成,如`jstack`或`VisualVM`,用于捕捉程序在特定时间点的详细状态。这些信息包括: 1. **线程堆栈跟踪**:显示每个线程当前执行的方法,帮助识别阻塞、死锁或资源争用...

    java参照webcam-capture调用摄像头拍照

    7. **自定义捕捉器**: 如果默认的捕捉器不能满足需求,你可以自定义实现`WebcamCaptureDriver`接口,以适应特定的设备或协议。 8. **配置和设置**: `webcam-capture`提供了多种配置选项,比如调整分辨率、帧率、...

    java连续截屏且转化为GIF

    接下来,使用`javax.imageio.ImageIO.write()`方法,将这个数组写入到GIF格式的文件中。这里要注意设置好GIF的动画参数,如延迟时间(每帧之间的间隔)、循环次数等。 4. **问题解决**: 对于描述中提到的问题——...

    Java实现潜艇大战游戏源码

    Java的事件监听器和事件处理器机制使得程序能够捕捉并处理这些事件。例如,玩家移动潜艇、发射鱼雷等动作都需要绑定相应的事件处理函数。 4. **多线程**:为了实现游戏的实时性,可能需要使用多线程。一个线程负责...

    JAVA 屏幕控制

    屏幕录制涉及到连续捕获屏幕变化并将其编码为视频文件,这在Java中相对复杂,因为Java标准库并没有提供直接的录制功能。通常,开发者会结合`Robot`类来捕捉屏幕图像,并使用第三方库(如Xuggler或FFmpeg)将这些帧...

    一般特征提取(Java版)

    本资源"一般特征提取(Java版)"专注于提供一系列非SIFT(Scale-Invariant Feature Transform)的特征提取方法。SIFT是一种著名的特征检测算法,因其对尺度变化、旋转和光照变化的鲁棒性而广泛应用于图像匹配和识别,...

    JAVA版本的MFCC算法

    9. **动态特征**:为了捕捉声音的变化,可以计算MFCC系数的差分和二阶差分,形成MFCC的动态特征。 在Java环境中实现MFCC,可能需要使用一些库,例如JTransforms用于傅里叶变换,或者自己编写相关的数学函数。此外,...

    Java编写的时钟程序

    Java Swing提供了`ActionListener`接口,通过实现这个接口并在按钮上添加监听器,可以捕捉到用户的操作,例如设置闹钟的时间。 7. **文件操作**: 虽然在这个场景中文件操作较少,但`Alarm.wav`的加载涉及到了文件...

    pcm,wav,amr三种格式8K和16K音频文件

    根据奈奎斯特定理,对于人类可听范围内的声音,8KHz采样率足以再现电话质量的声音,而16KHz则提供了CD音质,能捕捉更丰富的音频细节。 WAV(Waveform Audio Format)是微软和IBM共同开发的一种音频文件格式,基于...

    java树形菜单

    这些监听器可以帮助我们捕捉并处理用户的选择变化和节点展开/折叠事件。 5. **自定义外观**: Java Swing提供了多种方式来定制`JTree`的外观,包括通过`CellRenderer`来自定义节点的显示样式,以及通过`CellEditor`...

Global site tag (gtag.js) - Google Analytics