BufferedWriter 是 Java 中基于缓冲机制提升写入性能的字符输出类,需配合 FileWriter 或 OutputStreamWriter 使用,必须调用 close() 或用 try-with-resources 确保数据落盘;write() 不换行,newLine() 插入平台相关换行符;追加写入需 FileWriter 构造时传 true;中文需通过 OutputStreamWriter 指定 UTF-8 编码防乱码。

BufferedWriter 是 Java 中用于高效写入字符数据的类,它在 Writer 基础上增加了缓冲机制,减少底层 I/O 调用次数,提升写入性能。使用它写入文件时,需配合 FileWriter(或 OutputStreamWriter)来指定目标文件。
基本写入流程
核心步骤:创建 FileWriter → 包装为 BufferedWriter → 调用 write() 或 newLine() → 必须调用 close() 或使用 try-with-resources(否则缓冲区内容可能未真正写入磁盘)。
- 推荐始终用
try-with-resources自动释放资源 -
write(String)写入字符串,不换行;newLine()插入平台相关的换行符(如 Windows 是\r\n) - 若需追加内容,创建
FileWriter时传入true参数(如new FileWriter("a.txt", true))
写入单行与多行文本
适合写入日志、配置、简单文本等场景:
try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {
bw.write("第一行内容");
bw.newLine();
bw.write("第二行内容");
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
注意:write() 不会自动换行,必须显式调用 newLine() 才能分行显示。
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
写入数组或批量数据
可配合循环写入多条记录,例如写入字符串列表:
List<String> lines = Arrays.asList("苹果", "香蕉", "橙子");
try (BufferedWriter bw = new BufferedWriter(new FileWriter("fruits.txt"))) {
for (String line : lines) {
bw.write(line);
bw.newLine();
}
}
也可用 bw.write(char[], off, len) 写入字符数组片段,适用于更底层的控制。
编码与中文乱码问题
FileWriter 默认使用系统默认编码(Windows 常为 GBK),易导致中文乱码。要确保正确显示中文,请改用 OutputStreamWriter 显式指定 UTF-8:
try (BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("utf8.txt"), StandardCharsets.UTF_8))) {
bw.write("你好,世界!");
bw.newLine();
}
这是处理中文、日文等 Unicode 文本最稳妥的方式。

















