Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

BufferedReader 属于哪种流,有哪些常用方法?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

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 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。