java如何整行读取
整行读取的方法
在Java中,可以使用多种方式实现整行读取,适用于不同场景和需求。以下是几种常见的方法:
使用 BufferedReader 和 InputStreamReader
BufferedReader 提供了 readLine() 方法,可以方便地读取整行内容:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class ReadLineExample {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line = reader.readLine();
System.out.println("读取的内容: " + line);
}
}
使用 Scanner 类
Scanner 类的 nextLine() 方法也能实现整行读取,适合处理用户输入或文件内容:
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
System.out.println("读取的内容: " + line);
scanner.close();
}
}
从文件中整行读取
结合 BufferedReader 和 FileReader 可以逐行读取文件内容:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadExample {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
}
使用 Java 8 的 Files 类
Files 类的 readAllLines() 方法可以一次性读取所有行,返回一个 List<String>:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.io.IOException;
public class FilesExample {
public static void main(String[] args) throws IOException {
List<String> lines = Files.readAllLines(Paths.get("example.txt"));
for (String line : lines) {
System.out.println(line);
}
}
}
使用 Files.lines() 流式处理
对于大文件,可以使用 Files.lines() 以流的方式逐行处理,避免内存问题:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) throws IOException {
try (Stream<String> stream = Files.lines(Paths.get("example.txt"))) {
stream.forEach(System.out::println);
}
}
}
注意事项
- 资源管理:使用
BufferedReader或Scanner时,务必在完成后调用close()方法释放资源,或使用try-with-resources语法自动关闭。 - 性能考虑:对于大文件,推荐使用流式处理(如
Files.lines())而非一次性加载全部内容。 - 编码问题:读取文件时需注意字符编码,可通过
InputStreamReader指定编码(如StandardCharsets.UTF_8)。






