java - 有没有办法将先前初始化的 `bufferedReader` 重置为流的开头?

标签 java inputstream bufferedreader fileinputstream

我想做的是,当我使用初始化的 bufferedReader 时,我用它来使用 readLine() 从文件中读取行,当我到达末尾时作为示例,我想使用相同的 bufferedReader 对象从同一文件的开头读取行。

我试图实现这个问题的是,我使用了mark()reset(),在初始化bufferedReader之后我设置bufferReaderobject.mark(0) ,我读取了整个文件,之后我使用了 bufferReaderobject.reset() 并再次读取了整个文件,但随后引发了异常。看来 reset() 仅在未到达文件末尾时有效。

有没有办法将先前初始化的 bufferedReader 重置为流的开头?

最佳答案

为了能够以这种方式使用 reset(),整个文件必须适合 BufferedReader 的缓冲区。

这意味着您必须创建一个具有足够大缓冲区的 BufferedReader,或者在您想要再次读取文件时创建一个新实例。

关于java - 有没有办法将先前初始化的 `bufferedReader` 重置为流的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27567221/

相关文章:

java - Java 默认为 BufferedReader 使用什么编码/字符集?

java - 在 Java 中搜索文本文件并返回数组

java - 初始化 JButton 引用类型的二维数组

Java 8 : Lambda with variable arguments

java - 如何从 InputStream 创建图像,调整大小并保存?

java:加快读取外文字符

java - 如何将 Alpha、红色、绿色、蓝色的 4 个独立 Int 值更改为 TYPE_INT_RGB?

Java:使用 Process() 调用 Perl 脚本:wsd.pl

Java - 无法将窗口置于最前面

java - 读取 ClassLoader.getSystemResourceAsStream 后是否需要显式关闭输入流?