filewriter是java中用于字符写入的便捷类,基于writer子类自动处理默认编码,支持覆盖/追加模式,需手动换行、显式flush或用try-with-resources确保资源释放与数据写入。

FileWriter 是 Java 中用于向文件写入字符的便捷类,它直接操作字符流(Writer 子类),内部自动处理字符编码(默认使用平台默认编码,如 UTF-8 或 GBK),适合写入文本内容。
基本用法:创建 FileWriter 并写入字符串
最常用的方式是传入文件路径或 File 对象,调用 write() 方法写入字符、字符数组或字符串:
- 使用
new FileWriter("output.txt")创建,默认覆盖原文件;加true参数(如new FileWriter("output.txt", true))可追加写入 -
write(String)写入整个字符串;write(char[])或write(int c)写入单个字符或数组 - 必须调用
close()或使用 try-with-resources 确保资源释放,否则内容可能未真正写入磁盘
示例:
try (FileWriter fw = new FileWriter("hello.txt")) {fw.write("你好,Java!");
fw.write('\n');
fw.write("第二行".toCharArray());
}
注意编码问题:避免乱码
FileWriter 使用系统默认编码,跨平台时容易出问题。例如 Windows 默认 GBK,Linux/macOS 默认 UTF-8。若需指定编码(如强制 UTF-8),不应直接用 FileWriter,而应组合 FileOutputStream + OutputStreamWriter:
new FileOutputStream("utf8.txt"), StandardCharsets.UTF_8)) {
osw.write("中文正常显示");
}
写入后换行与刷新
FileWriter 不会自动换行,需手动写入 "\n"(Unix/Linux/macOS)或 "\r\n"(Windows)。也可用 System.lineSeparator() 提高兼容性。
虽然 close() 会自动 flush,但若想中途确保内容写入(比如日志实时查看),可显式调用 flush():
fw.write("日志开始"); fw.flush();- 后续再写入其他内容,不依赖 close 就能立刻看到
异常处理要点
FileWriter 构造和 write 过程可能抛出 IOException(如文件无写权限、路径不存在且无法创建父目录)。建议捕获并处理:
- 检查文件路径是否合法,父目录是否存在(可用
new File("dir").mkdirs()预创建) - 避免在循环中频繁新建 FileWriter——每次新建都会清空文件(非追加模式),应复用同一个实例
- 优先使用 try-with-resources,既简洁又安全
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











