Java写入文本推荐用BufferedWriter(带缓冲、支持newLine跨平台换行)或Files.write(简洁、自动关流),均需显式指定UTF-8编码防乱码,追加用FileWriter(true),路径用Paths.get()确保兼容。

Java 中写入文本内容最常用的方式是使用 FileWriter(适合简单字符写入)或 BufferedWriter(推荐,性能更好、支持换行等操作),配合 try-with-resources 自动关闭资源,避免文件句柄泄漏。
用 BufferedWriter 写入文本(推荐)
BufferedWriter 带缓冲,效率高,还提供 newLine() 方法处理跨平台换行符。
- 创建 FileWriter 时可指定字符编码(如 UTF-8),避免中文乱码
- 用 try-with-resources 确保流自动关闭,不用手动调
close() - 调用
write()写字符串,newLine()换行
String content = "Hello, Java!";
String filePath = "output.txt";
try (BufferedWriter writer = new BufferedWriter(
new FileWriter(filePath, StandardCharsets.UTF_8))) {
writer.write(content);
writer.newLine();
writer.write("第二行内容");
} catch (IOException e) {
e.printStackTrace();
}
追加内容到已有文件
在 FileWriter 构造方法中传入第二个参数 true,即可以追加模式打开文件。
- 不加该参数默认覆盖原文件
- 追加时同样建议用 BufferedWriter 封装
try (BufferedWriter writer = new BufferedWriter(
new FileWriter("log.txt", true))) { // true 表示追加
writer.write("[" + new Date() + "] 操作成功");
writer.newLine();
}
一次性写入多行(Files.write,Java 7+)
如果只是把一个字符串列表或整个字符串写入文件,Files.write() 最简洁,底层已处理编码和关闭。
立即学习“Java免费学习笔记(深入)”;
- 接受
List<string></string>,每项作为一行 - 支持指定编码(必须显式传入,否则用系统默认编码)
- 会覆盖原文件;如需追加,改用
StandardOpenOption.APPEND
List<String> lines = Arrays.asList("第一行", "第二行", "第三行");
Path path = Paths.get("data.txt");
Files.write(path, lines, StandardCharsets.UTF_8);
注意乱码和路径问题
中文写入出错,90% 是编码没统一;路径含中文或空格也可能导致异常。
- 始终显式指定
StandardCharsets.UTF_8,别依赖默认编码 - 文件路径建议用
Paths.get(...)或new File(...).toPath(),兼容不同系统 - 写入前可先检查父目录是否存在,用
Files.createDirectories()创建


















