OutputStreamWriter
java.lang.Object
|—java.io.Writer
|—|—java.io.OutputStreamWriter
public class OutputStreamWriter
extends Writer
OutputStreamWriter 是从字符流到字节流的桥梁:写入其中的字符使用指定的字符集编码为字节。 它使用的字符集可以由名称指定,也可以显式给出,或者可以接受平台的默认字符集。
每次调用 write() 方法都会导致对给定字符调用编码转换器。 结果字节在写入底层输出流之前累积在缓冲区中。 可以指定此缓冲区的大小,但默认情况下它对于大多数用途来说足够大。 请注意,传递给 write() 方法的字符不会被缓冲。
为了获得最高效率,请考虑将 OutputStreamWriter 包装在 BufferedWriter 中,以避免频繁的转换器调用。 例如:
Writer out
= new BufferedWriter(new OutputStreamWriter(System.out));
代理项对是由两个 char 值的序列表示的字符:在 ‘\uD800’ 到 ‘\uDBFF’ 范围内的高代理项,然后是在 ‘\uDC00’ 到 ‘\uDFFF’ 范围内的低代理项。
畸形的替代元素是高替代元素之后没有低替代元素或低替代元素之前没有高替代元素。
这个类总是用字符集的默认替换序列替换格式错误的代理元素和不可映射的字符序列。 当需要对编码过程进行更多控制时,应使用 CharsetEncoder 类。
Since:
JDK1.1
字段摘要
从类 java.io.Writer 继承的字段 |
---|
lock |
构造函数摘要
构造函数 | 描述 |
---|---|
OutputStreamWriter(OutputStream out) | 创建一个使用默认字符编码的 OutputStreamWriter。 |
OutputStreamWriter(OutputStream out, String charsetName) | 创建一个使用命名字符集的 OutputStreamWriter。 |
OutputStreamWriter(OutputStream out, Charset cs) | 创建一个使用给定字符集的 OutputStreamWriter。 |
OutputStreamWriter(OutputStream out, CharsetEncoder enc) | 创建一个使用给定字符集编码器的 OutputStreamWriter。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
void | close() | 关闭流,首先刷新它。 |
void | flush() | 冲洗流。 |
String | getEncoding() | 返回此流使用的字符编码的名称。 |
void | write(char[] cbuf, int off, int len) | 写入字符数组的一部分。 |
void | write(int c) | 写入单个字符。 |
void | write(String str, int off, int len) | 写入字符串的一部分。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从类 java.io.Writer 继承的方法 |
---|
append, append, append, write, write |
构造函数详细信息
OutputStreamWriter
public OutputStreamWriter(OutputStream out, String charsetName) throws UnsupportedEncodingException
创建一个使用命名字符集的 OutputStreamWriter。
参数:
参数名称 | 参数描述 |
---|---|
out | 输出流 |
charsetName | 支持的字符集的名称 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedEncodingException | 如果不支持命名编码 |
OutputStreamWriter
public OutputStreamWriter(OutputStream out)
创建一个使用默认字符编码的 OutputStreamWriter。
参数:
参数名称 | 参数描述 |
---|---|
out | 输出流 |
OutputStreamWriter
public OutputStreamWriter(OutputStream out, Charset cs)
创建一个使用给定字符集的 OutputStreamWriter。
参数:
参数名称 | 参数描述 |
---|---|
out | 输出流 |
cs | 一个字符集 |
Since:
1.4
OutputStreamWriter
public OutputStreamWriter(OutputStream out, CharsetEncoder enc)
创建一个使用给定字符集编码器的 OutputStreamWriter。
参数:
参数名称 | 参数描述 |
---|---|
out | 输出流 |
enc | 一个字符集编码器 |
Since:
1.4
方法详情
getEncoding
public String getEncoding()
返回此流使用的字符编码的名称。
如果编码具有历史名称,则返回该名称; 否则返回编码的规范名称。
如果此实例是使用 OutputStreamWriter(java.io.OutputStream,java.lang.String) 构造函数创建的,则返回的名称(对于编码是唯一的)可能与传递给构造函数的名称不同。 如果流已关闭,此方法可能会返回 null。
返回:
此编码的历史名称,如果流已关闭,则可能为 null
write
public void write(int c) throws IOException
写入单个字符。
覆盖:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
c | int 指定要写入的字符 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
write
public void write(char[] cbuf, int off, int len) throws IOException
写入字符数组的一部分。
指定者:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
cbuf | 字符缓冲区 |
off | 开始写入字符的偏移量 |
len | 要写入的字符数 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
write
public void write(String str, int off, int len) throws IOException
写入字符串的一部分。
覆盖:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
str | 一个字符串 |
off | 开始写入字符的偏移量 |
len | 要写入的字符数 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
flush
public void flush() throws IOException
冲洗流。
指定者:
在接口 Flushable 中刷新
指定者:
在 Writer 类中刷新
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
close
public void close() throws IOException
从班级复制的描述:Writer
关闭流,首先刷新它。 一旦流被关闭,进一步的 write() 或 flush() 调用将导致抛出 IOException。 关闭以前关闭的流没有效果。
指定者:
在接口 AutoCloseable 中关闭
指定者:
在接口Closeable中关闭
指定者:
关闭类 Writer
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |