您的位置:首页 > 大数据 > 人工智能

工具类commons-io的Tailer用法,用来监控文件内容的变化情况

2014-06-02 17:01 363 查看
一、前言:在Linux下有使用tail命令

      在Commons-io中也提供这种方法

二、他采用的是线程方式来监控文件内容的变化

1、Tailer类(采用线程的方式进行文件的内容变法)

2、TailerListener类

3、TailerListenerAdapter类,该类是集成了TailerListener的实现空的接口方式

三、测试使用代码

package com.yezi.leran.commons.io;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.input.Tailer;
import org.apache.commons.io.input.TailerListenerAdapter;

import java.io.File;

/**
* Created by yezi on 2014/6/2.
*/
public class TailerTest {

public static void main(String []args) throws Exception{
TailerTest tailerTest = new TailerTest();
tailerTest.test();
boolean flag = true;
File file = new File("C:/Users/yezi/Desktop/test/1.txt");

while(flag){
Thread.sleep(1000);
FileUtils.write(file,""+System.currentTimeMillis()+ IOUtils.LINE_SEPARATOR,true);
}

}

public void test() throws Exception{
File file = new File("C:/Users/yezi/Desktop/test/1.txt");
FileUtils.touch(file);

Tailer tailer = new Tailer(file,new TailerListenerAdapter(){

@Override
public void fileNotFound() { //文件没有找到
System.out.println("文件没有找到");
super.fileNotFound();
}

@Override
public void fileRotated() { //文件被外部的输入流改变
System.out.println("文件rotated");
super.fileRotated();
}

@Override
public void handle(String line) { //增加的文件的内容
System.out.println("文件line:"+line);
super.handle(line);
}

@Override
public void handle(Exception ex) {
ex.printStackTrace();
super.handle(ex);
}

},4000,true);
new Thread(tailer).start();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: