在Java中用BufferedWriter写入文本并换行,应调用newLine()而非拼接"\n",以适配系统换行符;推荐try-with-resources自动关闭流;需显式指定UTF-8编码防中文乱码;close()会自动flush,仅实时性要求时才手动flush。

在 Java 中使用 BufferedWriter 写入文本并换行,关键在于调用 newLine() 方法,而不是手动拼接 "\n" —— 因为 newLine() 会自动适配当前操作系统的换行符(如 Windows 用 "\r\n",Linux/macOS 用 "\n")。
创建 BufferedWriter 并确保资源正确关闭
推荐使用 try-with-resources 语法,自动关闭流,避免资源泄漏:
try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
writer.write("第一行内容");
writer.newLine(); // 换行
writer.write("第二行内容");
writer.newLine();
} catch (IOException e) {
e.printStackTrace();
}
write() 和 newLine() 的配合逻辑
write() 只写入字符,不带换行;newLine() 单独插入系统兼容的换行符。两者需配合使用:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 每次写完一行内容后,立即调用
newLine() - 不要依赖
write("xxx\n"),这可能在 Windows 上显示异常(多出回车或换行错位) - 如果需要连续写多行,可循环中重复
write + newLine
写入中文或特殊字符时注意编码
FileWriter 默认使用平台默认编码(如 Windows 是 GBK),容易导致中文乱码。建议显式指定 UTF-8:
try (BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("output.txt"), StandardCharsets.UTF_8))) {
writer.write("你好,世界!");
writer.newLine();
writer.write("第二行");
}
flush() 什么时候需要调用?
BufferedWriter 有内部缓冲区,内容不会立刻写入文件。一般情况下:
- 调用
close()会自动flush() - 若需中途确保内容已落盘(比如写日志时怕程序崩溃丢数据),可手动调用
writer.flush() - 通常无需主动 flush,除非有实时性要求
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










