如何实时读取一个不断更新的文本文件

生成文本文件的程序是由C完成的. 用JAVA如何实时读取这个不断更新文本文件中的内容?
写的方式是append的还是wirte的??
你要怎么读??
全部读出还是增量读出??
<< 写的方式是append的还是wirte的??
不太明白你的意思. 是C程序做的一个LOG日志文件. 应该是一行一行写入的.
<<你要怎么读??
一行一行读,每一秒读一次.
<<全部读出还是增量读出??
应该是增量读出吧.

FILE *fopen( const char *filename, const char *mode );
这个是c写文件打开文件的函数,其中mode可以是"r" "w" "a" "r+" "w+" "a+"
w跟a的区别是w每次open的时候都把文件清空,就是从0位置开始写,a是在最后追加写。写出的内容不同

w写的方式,你每次只需要全部read就好了
a你要记录你读到那里了,然后接着读。


你看看RandomAccessFile这个类吧
也许有帮助

我写了个例子,不用RandomAccessFile也可以.
import java.io.*;
public class writelog {
public static void main(String[] args) {
try{
FileWriter fw=new FileWriter("c:\\aa.txt",true);
BufferedWriter rf1=new BufferedWriter(fw);
for (int i = 0; i < 100; i ++ ){
rf1.write("this is line "+i);
rf1.newLine();
rf1.flush();
Thread.sleep(1000);
}
rf1.close();
}catch (Exception e){
System.out.println("write error!");
}

import java.io.BufferedReader;
import java.io.FileReader;
public class readlog {
public static void main(String[] args) {
try{
BufferedReader rf1 = new BufferedReader(new FileReader("c:\\aa.txt"));
String s1=null;
while((s1=rf1.readLine())!=null){
System.out.println(s1);
Thread.sleep(1000);
}
rf1.close();
}catch (Exception e){
System.out.println("read error!");
}
}
}

writelog是模拟连续写LOG内容部分, readlog 是读取不断更新的LOG文件部分, 先执行writelog,再执行readlog .

呵呵,你这不是全部读出么??
如果一个log文件有几百M,你这一运行要多长时间??
而且如果是连续输入与连续输出的话
你是不是每次都要给用户从头到尾看一遍啊??
这个程序有点BLOG....
如果文件在很长时间更新.程序监测不到文件是不是更新了啊