我想通过在文件到达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。谁能告诉我我的程序有什么问题?
答案 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);
这应该重复进行。