Writer字符输出流
Writer (抽象类)├── OutputStreamWriter│ └── FileWriter├── BufferedWriter├── CharArrayWriter├── PipedWriter├── FilterWriter└── PrintWriter
Writer 是 Java 中用于写入字符数据的抽象类,它是所有字符输出流的基类。与 OutputStream(字节输出流)不同,Writer 是以字符为单位写入数据的,适用于处理文本数据
Writer 的默认行为
- FileWriter:默认构造函数 new FileWriter("file.txt") 会覆盖文件内容。追加需使用带 append 参数的构造函数,例如 new FileWriter("file.txt", true)。
- BufferedWriter/PrintWriter:这些装饰器类的追加行为同样由底层的 FileWriter 参数决定。
常用方法
-
void write(int c)
-
作用: 将指定的字符(低 16 位)写入输出流
-
参数: c 是要写入的字符(0 到 65535 之间的整数)
Writer writer = new FileWriter("example.txt"); writer.write(65); // 写入字符 'A' writer.close();
-
-
void write(char[] cbuf)
-
作用: 将字符数组 cbuf 中的所有字符写入输出流。
-
参数: cbuf 是要写入的字符数组
Writer writer = new FileWriter("example.txt"); char[] data = {'H', 'e', 'l', 'l', 'o'}; // "Hello" 的字符表示 writer.write(data); // 写入字符数组 writer.close();
-
-
void write(char[] cbuf, int off, int len)
-
作用: 将字符数组 cbuf 中从偏移量 off 开始的 len 个字符写入输出流
Writer writer = new FileWriter("example.txt"); char[] data = {'H', 'e', 'l', 'l', 'o'}; // "Hello" 的字符表示 writer.write(data, 1, 3); // 写入 "ell" writer.close();
-
-
void write(String str)、void write(String str, int off, int len)
- 将字符串 str 中的所有字符写入输出流
- 将字符串 str 中从偏移量 off 开始的 len 个字符写入输出流
-
void flush()
- 作用: 刷新输出流,强制将缓冲区中的数据写入目标。
- 注意: 某些输出流(如 BufferedWriter)会将数据缓存在内存中,调用 flush() 可以确保数据立即写入目标
常用子类
FileWriter
: 用于将字符数据写入文件BufferedWriter
: 提供缓冲功能,提高写入效率OutputStreamWriter
: 将字节流转换为字符流(可以指定字符编码)PrintWriter
: 提供方便的打印方法(如print()
和println()
)