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();
}
}
}
使用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();
}
}
}
使用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();
}
}
}
使用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[] bytes = Files.readAllBytes(Paths.get(filePath));
for (byte b : bytes) {
System.out.print((char) b);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意事项
- 文件路径可以是相对路径或绝对路径,确保路径正确。
- 使用
try-with-resources语句可以自动关闭资源,避免内存泄漏。 - 处理大文件时,建议使用缓冲流逐行或分块读取,避免内存溢出。






