掌握 Java OutputStreamWriter:字符转字节桥梁与实战示例
Java OutputStreamWriter 类
OutputStreamWriter 位于 java.io,作为桥梁将字符数据转为字节数据。继承抽象 Writer,配合 FileOutputStream 等字节流工作。
因 Unicode 字符可能跨多字节,OutputStreamWriter 确保写入字节流时正确应用字符编码。
创建 OutputStreamWriter
导入必要类:
import java.io.OutputStreamWriter;
import java.io.FileOutputStream;
import java.nio.charset.Charset;
实例化 FileOutputStream 目标文件,再包装为 OutputStreamWriter。默认构造器用平台默认字符集,可显式设 UTF-8 或 UTF-16 保证跨环境一致:
// 默认字符集
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("output.txt"));
// 显式 UTF-8
OutputStreamWriter writerUtf8 = new OutputStreamWriter(
new FileOutputStream("output_utf8.txt"), Charset.forName("UTF-8"));
OutputStreamWriter 关键方法
write() 方法
write(int c)– 写单字符write(char[] cbuf)– 写字符数组write(String str)– 写字符串
示例:写文本到文件
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) {
String data = "This is a line of text inside the file.";
try {
FileOutputStream fileOut = new FileOutputStream("output.txt");
OutputStreamWriter writer = new OutputStreamWriter(fileOut, Charset.forName("UTF-8"));
writer.write(data);
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行后创建 output.txt,内容:
This is a line of text inside the file.
getEncoding() 方法
用 getEncoding() 获取当前使用的字符集:
FileOutputStream file = new FileOutputStream("output.txt");
OutputStreamWriter defaultWriter = new OutputStreamWriter(file);
OutputStreamWriter utf8Writer = new OutputStreamWriter(file, Charset.forName("UTF-8"));
System.out.println("Default encoding: " + defaultWriter.getEncoding());
System.out.println("UTF-8 encoding: " + utf8Writer.getEncoding());
输出
Default encoding: Cp1252 UTF-8 encoding: UTF-8
未指定字符集时返回平台默认。显式设置保证行为一致。
提示: 精确控制用 Charset.forName()。详见官方 Java Charset API。
close() 方法
始终调用 close() 释放系统资源。关闭后 writer 不可再用。
其他实用方法
| 方法 | 描述 |
|---|---|
flush() | 立即将缓冲数据写入底层流 |
append() | 便捷追加字符或字符串到 writer |
完整参考见官方 Java OutputStreamWriter Javadoc。
java
- 深入理解 Java final 关键字:变量、方法与类的不可变性
- Java instanceof 运算符完全指南:用法、继承与接口检查
- 精通 Java 继承:核心概念、类型与实战示例
- 深入理解 Java 静态嵌套类:用法、差异与实战示例
- 精通 Java 匿名内部类:定义、语法与实战示例
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 反射:运行时检查类、方法与字段
- 精通 Java ArrayList:操作、方法与最佳实践
- Java Stack 类全面指南:用法、核心方法与实战示例
- 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
- 掌握 Java 泛型:构建可复用、类型安全的代码
- 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除