java中filewriter追加写入需传入true参数:new filewriter("file.txt", true)在末尾添加内容而不覆盖;默认或false会清空重写;推荐try-with-resources管理资源,并注意编码、换行及线程安全问题。

Java 中用 FileWriter 写入文本并追加内容,关键在于构造时传入第二个布尔参数 true —— 它表示以追加模式打开文件;不传或传 false 则会覆盖原内容。
写入新内容(覆盖模式)
默认构造方式会清空文件再写入:
- 直接用
new FileWriter("file.txt"),等价于new FileWriter("file.txt", false) - 写入后原文件内容完全被替换,慎用,尤其处理重要日志或配置时
追加内容(不覆盖原有数据)
必须显式启用追加模式:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 使用
new FileWriter("file.txt", true),第二个参数为true - 每次写入都会从文件末尾开始添加,不会影响已有内容
- 如果文件不存在,会自动创建;存在则在末尾追加
完整示例(含资源管理)
推荐用 try-with-resources 自动关闭流,避免资源泄漏:
try (FileWriter writer = new FileWriter("log.txt", true)) {
writer.write("新增一行日志\n");
writer.write("时间:" + System.currentTimeMillis() + "\n");
} catch (IOException e) {
e.printStackTrace();
}
注意:write() 不自动换行,需手动加 "\n";如需更便捷的换行操作,可包装成 BufferedWriter 配合 newLine() 方法。
常见注意事项
-
FileWriter使用平台默认字符集,中文可能乱码;如需指定编码(如 UTF-8),应改用OutputStreamWriter + FileOutputStream - 频繁小量写入建议套一层
BufferedWriter提升性能 - 多线程同时写同一文件需自行加锁,
FileWriter本身不保证线程安全
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










