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

生成文本文件的程序是由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.... 如果文件在很长时间更新.程序监测不到文件是不是更新了啊