BufferedReader 属于哪种流,有哪些常用方法?
查看完整题解
参考回答
直接回答
BufferedReader 是字符输入流,继承 Reader,通过缓冲减少某些底层读取调用。常用方法包括 read、readLine、lines、mark/reset 和 close。它处理字符,不负责替你猜出原始字节的编码;字节到字符的解码应在合适的上游完成。
讲清原理
Reader 表示字符输入,InputStream 表示字节输入。需要从字节流读取文本时,可通过带明确 Charset 的 InputStreamReader 桥接,再按需要加缓冲。Files.newBufferedReader 也提供方便的文本文件读取方式。
readLine 返回一行内容,不包含行结束符;到流末尾返回 null,而空行返回空字符串。lines 返回惰性的流,消费和关闭底层资源的责任仍要明确。ready 也不能当作“文件是否读完”的通用判据。
例子与易错点
try (var reader = new java.io.BufferedReader(
new java.io.StringReader("A\n\nB"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println("[" + line + "]");
}
} // 依次打印 [A]、[]、[B]
不能用 line.isEmpty() 判断结束,否则会把合法空行误当作 EOF。
相关题:第 64 题、第 67 题。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。