ipk*_*iss 15 java file-io bufferedreader
我正在使用类BufferedReader在缓冲区中逐行读取.当读取缓冲区中的最后一行时,我想再次从缓冲区的开头读取.我已经读过关于mark()和reset()的内容,我不确定它的用法,但我不认为它们可以帮助我解决这个问题.
有没有人知道如何在到达最后一行后从缓冲区的开头开始阅读?就像我们可以使用RandomAccessFile的seek(0)一样?请.谢谢
jta*_*orn 37
标记/重置是你想要的,但你不能在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));
Run Code Online (Sandbox Code Playgroud)
(注意,建议不要使用默认字符集,只使用简化示例).
是的,标记和重置是您将要使用的方法。
// set the mark at the beginning of the buffer
bufferedReader.mark(0);
// read through the buffer here...
// reset to the last mark; in this case, it's the beginning of the buffer
bufferedReader.reset();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56306 次 |
| 最近记录: |