解决方案 »

  1.   

    copy on write.写的时候把原来的文件复制一份,一个文件写一个文件读,然后设置一个刷新时间把写好的文件拿来读,再创建一个新文件写
      

  2.   

    用ReadOnly方式打开,应该不会影响写还有一种办法就是把原来一直写的文件Copy成另外一个用来读的文件
    读完之后,把用来读的文件删除或者改名
      

  3.   

    问题简单。
    直接给代码吧。public class FileSyncRead { /**
     * @date Nov 3, 2014 10:27:52 AM<BR/>
     * @param args
     */
    public static void main(String[] args) throws Exception{
    File file = new File("F://sync.txt");
    RandomAccessFile raf = new RandomAccessFile(file, "r");
    FileDescriptor fd = raf.getFD();
    byte[] cache = new byte[1024];
    while(true){
    fd.sync();
    /*
    long size = raf.length();
    System.out.println(size);
    */
    int len = raf.read(cache);
    if(len > 0){
    String str = new String(cache, 0, len);
    System.out.println(str);
    }
    Thread.sleep(2000l);
    }
    }
    }