import java.io.BufferedReader
import java.io.File
import java.io.FileInputStream
import java.io.IOException
import java.io.InputStreamReader
import java.util.ArrayList
import java.util.List
public class FileReaderTest {
static List<String>logs = new ArrayList<String>()
public static List<String>readFile(File f) throws IOException {
if (f == null || !f.exists()) {
return null
}
List<String>list = new ArrayList<String>()
String encoding = "UTF-8"
InputStreamReader read = new InputStreamReader(new FileInputStream(f),
encoding)
BufferedReader br = new BufferedReader(read)
String line = null
import java.io.BufferedReaderimport 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()
}
}