上一篇                     
               
			  Java的ReadLine方法怎么用
- 后端开发
- 2025-06-18
- 4294
 在Java中,
 
 
readLine()方法通常通过
 BufferedReader类调用,用于逐行读取文本输入流(如文件或网络数据),使用时需先创建
 BufferedReader实例包裹输入流,调用
 readLine()返回字符串行(末尾不含换行符),读取完毕返回
 null,必须处理
 IOException并最终关闭流资源。
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 编译测试。
 
  
			