java 如何编辑文件
读取文件内容
使用 BufferedReader 或 Files 类读取文件内容到内存中。BufferedReader 适合逐行处理,Files.readAllLines 适合快速读取小文件。

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
// 使用 Files.readAllLines 读取所有行
List<String> lines = Files.readAllLines(Paths.get("input.txt"));
// 使用 BufferedReader 逐行读取
try (BufferedReader br = Files.newBufferedReader(Paths.get("input.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
修改文件内容
在内存中修改内容后,通过 BufferedWriter 或 Files.write 将内容写回文件。Files.write 适合直接覆盖写入,BufferedWriter 适合追加或复杂写入。

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
// 直接覆盖写入
List<String> newLines = Arrays.asList("Line 1", "Line 2");
Files.write(Paths.get("output.txt"), newLines);
// 使用 BufferedWriter 追加内容
try (BufferedWriter bw = Files.newBufferedWriter(
Paths.get("output.txt"), StandardOpenOption.APPEND)) {
bw.write("New content");
}
文件内容替换
若需替换特定内容,可结合字符串操作(如 replaceAll)完成修改后写入。
List<String> lines = Files.readAllLines(Paths.get("input.txt"));
List<String> modifiedLines = new ArrayList<>();
for (String line : lines) {
modifiedLines.add(line.replaceAll("old", "new"));
}
Files.write(Paths.get("output.txt"), modifiedLines);
大文件处理
对于大文件,使用流式处理(如 Files.lines)避免内存溢出。
try (Stream<String> stream = Files.lines(Paths.get("largefile.txt"))) {
stream.filter(line -> line.contains("keyword"))
.forEach(System.out::println);
}
注意事项
- 文件路径使用
Paths.get()或Path.of()(Java 11+)跨平台兼容。 - 写入前检查父目录是否存在:
Files.createDirectories(path.getParent())。 - 异常处理需捕获
IOException,推荐使用try-with-resources自动关闭流。
通过以上方法,可实现文件的读取、修改和写入操作。根据需求选择适合的 API 和策略。






