请问java中怎样监视某个文件变化?

解决方案 »

  1.   

    重新说一下需求:
    有个文本文件:test.txt ,有个程序随时都会往里面追加数据,我需要监视该文本文件,并于该程序写完数据后的空档时读取新追加的数据,请问怎么实现这个监听功能?
      

  2.   

    lbfhappy(千里冰封) 的思路是正确的~~~~~~~~~~~~~~~~~
      

  3.   

    每次写完后,把这个文件(如 test.txt)的长度存到一个变量中(如  oldFileSize ),用一个线程来监控 test.txt 的大小,将之与 oldFileSize 作比较,如果有变化,则 
       RandomAccessFile raf = new RandomAccessFile("test.txt" , "wb");
         raf.seek(oldFileSize);
        File file = new File("c:/test.txt");
    RandomAccessFile raf= new RandomAccessFile(file,"rw");
    raf.seek(4);
    byte[] buf = new byte[58];
    int size = raf.read(buf);
    String yourNeedStr = new String (buf, 0, size);
       其中yourNeedStr中就是你想要的内容了.
      

  4.   


    CSDN - 专家门诊 - Java J2SE / 扩展类问题
    回复 | 推荐 | 收藏 | 专题 | 公告 | 管理 | 关闭窗口 
    主  题:  『提问』java中怎样监视某个文件变化?
    作  者:  gongzhy (2369)
    等  级: 
    信 誉 值:  100
    所属论坛:  Java J2SE / 扩展类
    问题点数:  20
    回复次数:  8
    发表时间:  2006-9-1 11:54:15

    请问java中怎样监视某个文件变化?
    回复人:fishyqd(小鱼儿-屯粮,接分) ( 四级(中级)) 信誉:100  2006-9-1 13:56:13  得分:0
    ?  监视变化是什么意思?内容改变,还是删除,等等操作?
    Top
    回复人:gongzhy(2369) ( 一级(初级)) 信誉:100  2006-9-1 13:59:50  得分:0
    ?  文件内容变化,比如增加了等等
    Top
    回复人:gongzhy(2369) ( 一级(初级)) 信誉:100  2006-9-1 14:18:30  得分:0
    ?  重新说一下需求:
    有个文本文件:test.txt ,有个程序随时都会往里面追加数据,我需要监视该文本文件,并于该程序写完数据后的空档时读取新追加的数据,请问怎么实现这个监听功能?
    Top
    回复人:lbfhappy(千里冰封) ( 四级(中级)) 信誉:100  2006-9-1 14:48:48  得分:0
    ?  起一个线程,去读取这个文件里面的内容,当内容有变化的时候,就可以做你想做的事了
    还有,要记得线程同步问题
    Top
    回复人:cuiyue4420(流畅) ( 一级(初级)) 信誉:100  2006-9-1 16:41:31  得分:0
    ?  输出出来
    Top
    回复人:lky5387() ( 一级(初级)) 信誉:100  2006-9-1 17:04:55  得分:0
    ?  lbfhappy(千里冰封) 的思路是正确的~~~~~~~~~~~~~~~~~Top
    回复人:dengy1979(笨笨) ( 一级(初级)) 信誉:100  2006-9-1 18:30:25  得分:0
    ?  每次写完后,把这个文件(如 test.txt)的长度存到一个变量中(如 oldFileSize ),用一个线程来监控 test.txt 的大小,将之与 oldFileSize 作比较,如果有变化,则
    RandomAccessFile raf = new RandomAccessFile("test.txt" , "wb");
    raf.seek(oldFileSize);
    File file = new File("c:/test.txt");
    RandomAccessFile raf= new RandomAccessFile(file,"rw");
    //   raf.seek(4);   // 上面答复中的此句应去掉,只是我测试时用的
    byte[] buf = new byte[1024];  
    int size = raf.read(buf);
    String yourNeedStr = new String (buf, 0, size);
    其中yourNeedStr中就是你想要的内容了.
      

  5.   

    还要考虑一个问题,假设该文件为一个日志文件,有一天被人清空了,怎么处理啊?
    还有设置一个point文件指针,但程序异常结束或人为结束,point不就又从头开始了