Writer 是 Java 中用于写入 Unicode 字符的抽象基类,需通过 FileWriter、BufferedWriter、StringWriter 等子类实现;适用于日志、配置文件、HTML/JSON 生成等文本场景,核心优势是自动处理字符编码、避免乱码。

Writer 是 Java 中用于写入字符数据的抽象基类,不能直接实例化,必须使用它的子类(如 FileWriter、BufferedWriter、StringWriter 等)来完成实际的字符输出操作。
Writer 的核心作用和适用场景
它专为处理 Unicode 字符设计,适合写入文本内容(如中文、英文、符号等),相比字节流(OutputStream),能自动处理字符编码问题,避免乱码。常见于日志记录、配置文件生成、HTML/JSON 文本构建等场景。
常用子类及典型用法
FileWriter:最简单的文件字符写入方式,适合小量文本写入。
- 默认使用系统默认编码,建议显式指定编码(通过 OutputStreamWriter + FileOutputStream 组合更可控)
- 构造时传入文件路径,可选择是否追加模式(true 表示追加,false 或无参表示覆盖)
BufferedWriter:包装其他 Writer,提供缓冲功能,显著提升频繁写入的性能。
立即学习“Java免费学习笔记(深入)”;
- 配合 newLine() 方法可跨平台写入换行符(Windows 是 \r\n,Linux/macOS 是 \n)
- 务必调用 flush() 或 close(),否则缓冲区内容可能未真正写入目标
StringWriter:将字符写入内存中的字符串缓冲区,常用于动态拼接文本或作为中间载体(例如模板渲染、XML 构建)。
- 调用 toString() 即可获取最终字符串内容
- 无需关闭,也不涉及 I/O 资源释放
基本操作步骤(以 FileWriter + BufferedWriter 为例)
- 创建 FileWriter 对象(指定文件路径和是否追加)
- 用它构造 BufferedWriter(增强性能和功能)
- 调用 write(String)、write(char[], int, int) 或 append(CharSequence) 写入内容
- 写完后调用 close() —— 它会自动 flush 并释放资源(推荐 try-with-resources 自动管理)
不复杂但容易忽略编码和资源关闭,用对子类、配好缓冲、记得关流,就能稳定输出字符内容。










