我目前在同一个文本文件上初始化了 2 个 BufferedReader
。当我用第一个 BufferedReader
读完文本文件后,我使用第二个从顶部再通过文件。需要多次通过同一个文件。
我知道 reset()
,但是需要在调用 mark()
和 mark()
之前知道文件的大小,我认为我不应该打扰。
想法?包裹?库?代码?
谢谢 TJ
最佳答案
缓冲读取器旨在按顺序读取文件。您正在寻找的是 java.io.RandomAccessFile ,然后您可以使用 seek()
将您带到文件中所需的位置。
随机存取阅读器是这样实现的:
try{
String fileName = "c:/myraffile.txt";
File file = new File(fileName);
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.readChar();
raf.seek(0);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
"rw"
是一个模式字符,它是 detailed here .
这样设置顺序存取读取器的原因是,它们可以实现其缓冲区,并且不能在其脚下进行更改。例如,提供给缓冲阅读器的文件阅读器只能由该缓冲阅读器操作。如果有另一个可能影响它的位置,您可能会出现不一致的操作,因为一个阅读器在文件阅读器中提升了它的位置,而另一个阅读器希望它保持不变,现在您使用另一个阅读器并且它位于未确定的位置。
关于Java BufferedReader 回到文本文件的顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/262618/