使用随机访问重新读取文件

时间:2012-09-20 07:03:22

标签: java file random-access

我想通过在文件到达EOF时向文件添加数据来重新读取文件。但添加数据后的第二次读取无效。

这是我的代码

       File f = new File("sample.csv");
       byte[] bb= new byte[(int)f.length()];
      RandomAccessFile raf = new RandomAccessFile (f, "r");
      int bytesread=0;
      bytesread = raf.read(bb, 0,(int)f.length());
              //bytesread =302 or something

      raf.seek(f.length());
      Thread.sleep(4000);
      bytesread = raf.read(bb,0,2); 
    //bytesread = -1 instead of 2  
      raf.close();

我正在做的事情是,在第一次阅读时,我正在阅读文件的内容 我的bytesread = 302或者什么的。现在寻找指向EOF的指针并将一些数据添加到我的文件中并再次读取它,但不是所需的结果bytesread = 2,我将bytesread作为-1。谁能告诉我我的程序有什么问题?

1 个答案:

答案 0 :(得分:1)

对于大多数流,一旦你读到文件的结尾,就不能再读了(RandomAccessFIle可能会有所不同,但我怀疑不是)

我要做的只是阅读,但不包括文件的结尾,其他流的工作。

e.g。

int positionToRead = ...
int length = f.length();
// only read the bytes which are there.
int bytesRead = f.read(bb, 0, length - positionToRead); 

这应该重复进行。