java 如何读写文件
读取文件
使用 java.nio.file.Files 类的 readAllBytes 或 readAllLines 方法可以快速读取文件内容。readAllBytes 返回字节数组,适合读取二进制文件;readAllLines 返回字符串列表,适合读取文本文件。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
// 读取文本文件为字符串
String content = new String(Files.readAllBytes(Paths.get("file.txt")));
// 按行读取文本文件
List<String> lines = Files.readAllLines(Paths.get("file.txt"));
使用 BufferedReader 逐行读取大文件可以避免内存不足问题。
import java.io.BufferedReader;
import java.io.FileReader;
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
写入文件
使用 Files.write 方法可以快速写入内容到文件。支持写入字节数组或字符串列表。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
// 写入字符串
Files.write(Paths.get("file.txt"), "content".getBytes());
// 按行写入
List<String> lines = Arrays.asList("line1", "line2");
Files.write(Paths.get("file.txt"), lines);
使用 BufferedWriter 写入大文件可以提高性能。
import java.io.BufferedWriter;
import java.io.FileWriter;
try (BufferedWriter bw = new BufferedWriter(new FileWriter("file.txt"))) {
bw.write("content");
bw.newLine();
bw.write("more content");
}
文件路径处理
Paths.get 方法可以处理不同操作系统的路径分隔符问题。
import java.nio.file.Paths;
// 跨平台路径
String path = Paths.get("dir", "subdir", "file.txt").toString();
异常处理
文件操作需要处理 IOException,推荐使用 try-with-resources 语句自动关闭资源。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
try {
String content = new String(Files.readAllBytes(Paths.get("file.txt")));
} catch (IOException e) {
e.printStackTrace();
}






