Java中向文件追加内容需用append=true参数:FileWriter(简单文本)或FileOutputStream+OutputStreamWriter+BufferedWriter(推荐,支持UTF-8等编码及高效写入)。

在 Java 中向已有文件追加内容,关键在于使用带 append=true 参数的输出流,确保写入时不会覆盖原文件,而是从末尾开始添加新数据。
用 FileWriter 追加文本(最常用)
FileWriter 默认会覆盖文件,但传入第二个参数 true 即可开启追加模式:
- 代码示例:
fw.write("新增一行日志\n");
}
注意:FileWriter 使用平台默认字符编码,如需指定编码(如 UTF-8),建议改用 OutputStreamWriter + FileOutputStream(见下一条)。
你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型
用 FileOutputStream + OutputStreamWriter 追加(推荐,可控性强)
这种方式能明确指定字符编码,避免中文乱码,也更符合现代写法:
- 创建 FileOutputStream 时传入 true 启用追加
- 套一层 OutputStreamWriter 并指定编码(如 "UTF-8")
- 再包装成 BufferedWriter 提升效率(尤其频繁写入时)
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw)) {
bw.write("这是追加的内容");
bw.newLine(); // 换行(可选)
}
注意事项和常见问题
-
路径不存在会自动创建文件,但父目录不会自动创建 —— 如果目录不存在,会抛出 FileNotFoundException,需提前用
Files.createDirectories()创建 - 多线程写入同一文件不安全 —— 如需并发追加,应加锁或使用日志框架(如 Log4j、SLF4J)
-
换行符要手动加 ——
write()不自动换行,可用newLine()或拼接"\n"(跨平台建议用System.lineSeparator()) - 小量追加别用缓冲流反复开闭 —— 频繁调用会导致性能下降,可复用 BufferedWriter 实例(注意线程安全)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










