Java BufferedReader 回到文本文件的顶部?
2022-09-01 16:49:22
我目前在同一文本文件上初始化了2 s。当我用第一个完成文本文件的读取后,我使用第二个从顶部通过另一个文件。需要对同一文件进行多次传递。BufferedReader
BufferedReader
我知道,但它需要在调用之前进行调用,并且需要知道文件的大小,我认为我不应该打扰。reset()
mark()
mark()
想法?包?Libs?法典?
谢谢泰杰
我目前在同一文本文件上初始化了2 s。当我用第一个完成文本文件的读取后,我使用第二个从顶部通过另一个文件。需要对同一文件进行多次传递。BufferedReader
BufferedReader
我知道,但它需要在调用之前进行调用,并且需要知道文件的大小,我认为我不应该打扰。reset()
mark()
mark()
想法?包?Libs?法典?
谢谢泰杰
缓冲读取器用于按顺序读取文件。你要找的是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"
顺序访问读取器之所以这样设置,是因为它们可以实现其缓冲区,并且无法在其脚下更改内容。例如,提供给缓冲读取器的文件读取器只能由该缓冲读取器操作。如果有另一个位置可能会影响它,则当一个读取器在文件读取器中提升其位置而另一个读取器希望它保持不变时,您可能会遇到不一致的操作,因为您使用另一个读取器并且它位于未确定的位置。
只是从顶部创建一个新的阅读有什么缺点?我希望操作系统缓存文件,如果它足够小。BufferedReader
如果您担心性能,您是否证明它是一个瓶颈?我只是做最简单的事情,在你有具体原因之前不担心它。我的意思是,你可以把整个事情读进记忆里,然后对结果进行两次传递,但同样,这将比仅仅从头开始阅读新读者要复杂得多。