用Java中的BufferedReader重置缓冲区?
我正在使用类BufferedReader
在缓冲区中逐行读取。当读取缓冲区的最后一行时,我想再次从缓冲区的开头开始读取。我已经阅读过有关mark()
和的信息reset()
,我不确定它的用法,但我认为它们不能帮助我。
有人知道到达最后一行后如何从缓冲区的开头开始读取吗?像我们可以使用seek(0)
的RandomAccessFile
?
回答:
标记/重置是您想要的,但是您不能真正在BufferedReader上使用它,因为它只能重置一定数量的字节(缓冲区大小)。如果您的文件大于该文件,它将无法使用。不幸的是,没有“简单”的方法可以做到这一点,但是它并不是很难处理,您只需要原始FileInputStream的句柄即可。
FileInputStream fIn = ...;BufferedReader bRead = new BufferedReader(new InputStreamReader(fIn));
// ... read through bRead ...
// "reset" to beginning of file (discard old buffered reader)
fIn.getChannel().position(0);
bRead = new BufferedReader(new InputStreamReader(fIn));
(请注意,不建议使用默认字符集,仅使用简化示例即可)。
以上是 用Java中的BufferedReader重置缓冲区? 的全部内容, 来源链接: utcz.com/qa/416787.html