我使用BufferedReader从文件中读取行。当我从文件中读取所有行我想从头开始重新读取文件时,我该怎么办? BufferedReader.mark()
和BufferedReader.reset()
无效。这是我的代码
FileReader fR = new FileReader(this.sTargetPath);
final BufferedReader vcfBuffer = new BufferedReader(fR);
// vcfBuffer.mark(0);
Boolean nextLine = true;
while (nextLine) {
try {
String line = vcfBuffer.readLine();
}
} catch (IOException e) {
nextLine = false;
}
}
}
vcfBuffer.reset();
如何重置BufferedREader位置?谢谢你的帮助
答案 0 :(得分:1)
javadoc of mark()说:(强调我的):
参数:
readAheadLimit - 限制在保留标记的同时可以读取的字符数。尝试重置流 在阅读达到此限制或更高限度的字符后,可能会失败。限制 大于输入缓冲区大小的值将导致新的缓冲区 被分配的大小不小于限制。因此大 值得谨慎使用。
如果以0作为参数调用它,只要再从读取器读取一个字节,就可能无法重置。
解决方案是使用文件的长度作为参数调用mark方法。但是,当然,这将导致在内存缓冲区中读取整个文件。如果您不想要,请关闭阅读器并重新打开新的BufferedReader。