Java的ReadLine方法怎么用
- 后端开发
- 2025-06-18
- 11
Java 中的 readLine() 方法是用于逐行读取文本数据的核心方法,它属于 BufferedReader 类,下面详细介绍其使用方法和注意事项,结合代码示例说明。
readLine() 的作用和原理
-
功能:
从输入流(如文件、网络连接)中读取一行文本,返回 String 类型(不包含行终止符 n 或 rn)。
当读到文件末尾时返回 null。

-
所属类:
java.io.BufferedReader.readLine()
通过 BufferedReader 包装其他流(如 FileReader、InputStreamReader),能大幅提升读取效率(减少磁盘 I/O 操作)。
完整使用步骤(含代码)
场景:读取文本文件内容
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ReadLineExample { public static void main(String[] args) { // 1. 定义文件路径 String filePath = "test.txt"; // 2. 使用 try-with-resources 自动关闭资源(Java 7+) try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; // 3. 逐行读取直到返回 null while ((line = reader.readLine()) != null) { System.out.println(line); // 处理每一行数据 } } catch (IOException e) { // 4. 异常处理(文件不存在/读取错误) System.err.println("读取文件失败: " + e.getMessage()); } } }
关键代码解析:
- BufferedReader reader = new BufferedReader(new FileReader("test.txt")):
用 BufferedReader 包装 FileReader,提升读取效率。
- while ((line = reader.readLine()) != null):
循环读取每一行,直到文件末尾。
- try-with-resources:
自动调用 reader.close(),避免资源泄漏(必须关闭流!)。
其他常见使用场景
示例 1:读取控制台输入(System.in)
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) { System.out.print("请输入内容: "); String input = reader.readLine(); // 等待用户输入一行 System.out.println("您输入的是: " + input); } catch (IOException e) { e.printStackTrace(); }
示例 2:读取网络数据(Socket)
try (Socket socket = new Socket("example.com", 80); BufferedReader reader = new BufferedReader( new InputStreamReader(socket.getInputStream()) )) { String responseLine; while ((responseLine = reader.readLine()) != null) { System.out.println(responseLine); // 输出服务器响应 } } catch (IOException e) { // 处理异常 }
注意事项与常见问题
-
资源关闭:
必须用 try-with-resources 或 finally 块关闭流,否则会导致文件句柄泄漏。

-
字符编码问题:
如果文件编码不是系统默认(如 UTF-8),需指定编码:
BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream("data.txt"), StandardCharsets.UTF_8) ); -
性能优化:

- 大文件读取优先用 BufferedReader(默认缓冲区 8KB)。
- 避免在循环中重复创建 BufferedReader。
-
空行处理:
readLine() 遇到空行时返回空字符串 (非 null),需额外判断:
while ((line = reader.readLine()) != null) { if (!line.trim().isEmpty()) { // 跳过空行 // 处理非空行 } }
-
常见错误:
- FileNotFoundException:文件路径错误或权限不足。
- IOException:读取过程中断(如磁盘损坏)。
- 忘记检查 null:导致循环无限执行。
- 始终用 try-with-resources:确保资源释放,代码更简洁。
- 指定字符编码:避免中文乱码问题。
- 处理大文件时:结合流式处理(如 Files.lines()),避免内存溢出: Files.lines(Paths.get("largefile.txt"), StandardCharsets.UTF_8) .forEach(System.out::println);
最佳实践
引用说明参考 Oracle 官方文档 BufferedReader (Java SE 17),结合实践经验编写,代码示例遵循 Java 编码规范,已通过 JDK 17 编译测试。