java 如何读取文件
读取文件的方法
Java提供了多种读取文件的方式,可以根据需求选择适合的方法。以下是常见的几种方法:
使用 BufferedReader 读取文本文件
BufferedReader 适用于逐行读取文本文件,效率较高。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
String filePath = "example.txt";
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Scanner 读取文本文件
Scanner 提供了更简单的逐行或按分隔符读取的功能。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadFile {
public static void main(String[] args) {
String filePath = "example.txt";
try (Scanner scanner = new Scanner(new File(filePath))) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
使用 Files.readAllLines 读取文本文件(Java 8+)
Files.readAllLines 可以一次性读取所有行,适用于小文件。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
String filePath = "example.txt";
try {
List<String> lines = Files.readAllLines(Paths.get(filePath));
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 FileInputStream 读取二进制文件
FileInputStream 适用于读取二进制文件(如图片、音频等)。
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
String filePath = "example.bin";
try (FileInputStream fis = new FileInputStream(filePath)) {
int byteData;
while ((byteData = fis.read()) != -1) {
System.out.print((char) byteData);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Files.readAllBytes 读取二进制文件(Java 7+)
Files.readAllBytes 可以一次性读取整个二进制文件。

import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
String filePath = "example.bin";
try {
byte[] fileData = Files.readAllBytes(Paths.get(filePath));
for (byte b : fileData) {
System.out.print((char) b);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意事项
- 使用
try-with-resources语法可以自动关闭资源,避免内存泄漏。 - 对于大文件,建议使用逐行或逐块读取的方式,避免内存不足。
- 处理文件路径时,建议使用
Paths.get()或File类来确保跨平台兼容性。






