當前位置:編程學習大全網 - 源碼下載 - java定時讀取日誌文件

java定時讀取日誌文件

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.io.RandomAccessFile;

import java.io.ByteArrayInputStream;

class Reader implements Runnable {

Reader(String filename) {

this.filename = filename;

}

private String filename;

private long filelength = 0;

private int count=0;

@Override

public void run() {

while (true) {

try {

File f = new File(filename);

long nowlength = f.length();

long readlength = nowlength - filelength;

if (readlength == 0) {

Thread.sleep(1000);

continue;

}

RandomAccessFile rf = new RandomAccessFile(f, "r");

// 移動文件指針到上次讀的最後

rf.seek(filelength);

filelength=nowlength;

byte[] b = new byte[(int) readlength];

rf.read(b, 0, b.length);

rf.close();

BufferedReader br=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(b)));

String str=null;

count++;

System.out.println("第"+count+"次讀到的內容:");

while((str=br.readLine())!=null){

System.out.println(str);

}

br.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

class Writer implements Runnable{

Writer(String filename) {

this.filename = filename;

}

private String filename;

private int count=0;

@Override

public void run() {

while (count++<100){

try {

PrintWriter pw=new PrintWriter(new FileWriter(filename,true));

pw.append(""+count).append("\t").append(""+System.currentTimeMillis()).append("寫入的內容").append("\r\n");

pw.close();

Thread.sleep(100);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

public class ReadFileFromTrail {

public static void main(String[] args) {

Reader reader=new Reader("d:\\test.log");

Writer writer=new Writer("d:\\test.log");

new Thread(reader).start();

new Thread(writer).start();

}

}

  • 上一篇:全國貨運物流主要運行指標持續向好
  • 下一篇:信用卡充六次不收年費意味著什麽?
  • copyright 2024編程學習大全網