基本概念与作用
在Java中,readLine()方法是处理文本输入时常用的函数,主要用于从输入流中读取一行文本,该方法属于java.io.BufferedReader类,其核心功能是读取直到遇到换行符(\n)、回车符(\r)或回车换行符(\r\n)为止的字符序列,并返回一个包含该行内容的字符串(不包括换行符),若到达流末尾且无可用字符,则返回null,这一特性使其在逐行处理文件、控制台输入等场景中具有不可替代的作用,尤其在需要按行解析文本数据的场景下,能够高效且便捷地完成数据读取任务。

使用前提:BufferedReader的初始化
readLine()方法并非独立存在,它依赖于BufferedReader类,因此在使用前必须先创建BufferedReader对象。BufferedReader需要包装一个字符输入流,如FileReader(用于读取文件)或InputStreamReader(用于读取控制台输入或其他字节流转换的字符流),以读取文件为例,初始化步骤通常为:
- 导入必要的类:
import java.io.BufferedReader;、import java.io.FileReader;、import java.io.IOException; - 创建
FileReader对象,指定文件路径:FileReader fileReader = new FileReader("example.txt"); - 使用
FileReader创建BufferedReader对象:BufferedReader reader = new BufferedReader(fileReader);
若需读取控制台输入,则可通过InputStreamReader包装System.in(标准输入流):BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));。
核心使用方法与示例
readLine()方法的基本调用方式为String line = reader.readLine();,每次调用会读取输入流中的一行数据,以下通过两个典型场景展示其具体应用。
从文件中逐行读取
假设存在一个名为example.txt的文本文件,内容如下:

Hello, Java!
This is the first line.
This is the second line.
使用readLine()读取文件的代码如下:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileExample {
public static void main(String[] args) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("example.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.err.println("读取文件时发生错误: " + e.getMessage());
} finally {
try {
if (reader != null) {
reader.close(); // 关闭流,释放资源
}
} catch (IOException e) {
System.err.println("关闭流时发生错误: " + e.getMessage());
}
}
}
}
运行结果会逐行输出文件内容,代码中通过while循环持续调用readLine(),直到返回null(文件末尾),并通过try-catch-finally确保流资源被正确关闭,避免资源泄漏。
从控制台读取用户输入
若需从控制台逐行读取用户输入,直到输入”exit”为止,代码如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ConsoleInputExample {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入内容(输入exit退出):");
try {
String line;
while (!(line = reader.readLine()).equals("exit")) {
System.out.println("你输入了: " + line);
}
System.out.println("程序结束。");
} catch (IOException e) {
System.err.println("读取控制台输入时发生错误: " + e.getMessage());
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
System.err.println("关闭流时发生错误: " + e.getMessage());
}
}
}
}
此示例中,readLine()会阻塞程序执行,等待用户输入一行内容并按回车键,直到用户输入”exit”后循环终止。

注意事项与最佳实践
使用readLine()时需注意以下几点,以确保代码的健壮性与安全性:
- 异常处理:
readLine()可能抛出IOException,因此必须通过try-catch语句捕获处理,避免程序因未捕获的异常而终止。 - 资源关闭:
BufferedReader作为IO流资源,使用后必须通过close()方法关闭,推荐在finally块中关闭,或在Java 7+中使用try-with-resources语句(自动关闭资源),try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.err.println("读取文件时发生错误: " + e.getMessage()); } - 编码问题:若读取的文件包含非UTF-8编码的字符(如GBK),需在创建
FileReader时指定编码,new InputStreamReader(new FileInputStream("example.txt"), "GBK"),避免乱码。 - 空行处理:若文件中存在空行,
readLine()会返回空字符串而非null,需根据业务逻辑判断是否处理空行。
readLine()方法是Java中处理文本行输入的核心工具,通过结合BufferedReader类,能够高效实现文件逐行读取、控制台交互等功能,其使用关键在于正确初始化流对象、处理异常、关闭资源,并注意编码与空行等细节,掌握readLine()的用法,对于开发涉及文本处理的Java应用具有重要意义,能够显著提升代码的可读性与执行效率。



















