- java.lang.Object
-
- java.io.Writer
-
- java.io.OutputStreamWriter
-
- All Implemented Interfaces:
-
Closeable
,Flushable
,Appendable
,AutoCloseable
- 已知直接子类:
-
FileWriter
public class OutputStreamWriter extends Writer
OutputStreamWriter是从字符流到字节流的桥梁:使用指定的charset
将写入的字符编码为字节。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。每次调用write()方法都会使编码转换器在给定的字符上被调用。 所得到的字节在写入底层输出流之前累积在缓冲区中。 请注意,传递给write()方法的字符不会缓冲。
为了最大的效率,请考虑在BufferedWriter中包装一个OutputStreamWriter,以避免频繁的转换器调用。 例如:
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
代理对是由两个
char
值的序列表示的字符:“\ uD800”到“\ uDBFF”范围内的高代理,后跟“\ uDC00”到“\ uDFFF”范围内的低代理。一个畸形的替代元素是一个高替代品,其后没有高替代品的低替代品或低替代品。
这个类总是用字符集的默认替换序列替换格式不正确的代理元素和不可映射的字符序列 。 当需要更多的编码过程控制时,应使用CharsetEncoder类。
- 从以下版本开始:
- 1.1
- 另请参见:
-
BufferedWriter
,OutputStream
,Charset
-
-
构造方法摘要
构造方法 Constructor 描述 OutputStreamWriter(OutputStream out)
创建一个使用默认字符编码的OutputStreamWriter。OutputStreamWriter(OutputStream out, String charsetName)
创建一个使用命名字符集的OutputStreamWriter。OutputStreamWriter(OutputStream out, Charset cs)
创建一个使用给定字符集的OutputStreamWriter。OutputStreamWriter(OutputStream out, CharsetEncoder enc)
创建一个使用给定字符集编码器的OutputStreamWriter。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 Writer
append(CharSequence csq)
将指定的字符序列附加到此作者。Writer
append(CharSequence csq, int start, int end)
将指定字符序列的子序列附加到此作者。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)
写一个字符串的一部分。
-
-
-
构造方法详细信息
-
OutputStreamWriter
public OutputStreamWriter(OutputStream out, String charsetName) throws UnsupportedEncodingException
创建一个使用命名字符集的OutputStreamWriter。- 参数
-
out
- 一个OutputStream -
charsetName
- 支持的名称charset
- 异常
-
UnsupportedEncodingException
- 如果不支持命名编码
-
OutputStreamWriter
public OutputStreamWriter(OutputStream out)
创建一个使用默认字符编码的OutputStreamWriter。- 参数
-
out
- 一个OutputStream
-
OutputStreamWriter
public OutputStreamWriter(OutputStream out, Charset cs)
创建一个使用给定字符集的OutputStreamWriter。- 参数
-
out
- 一个OutputStream -
cs
- 字符集 - 从以下版本开始:
- 1.4
-
OutputStreamWriter
public OutputStreamWriter(OutputStream out, CharsetEncoder enc)
创建一个使用给定字符集编码器的OutputStreamWriter。- 参数
-
out
- 一个OutputStream -
enc
- 字符集编码器 - 从以下版本开始:
- 1.4
-
-
方法详细信息
-
getEncoding
public String getEncoding()
返回此流使用的字符编码的名称。如果编码具有历史名称,则返回该名称; 否则返回编码的规范名称。
如果此实例是使用
OutputStreamWriter(OutputStream, String)
构造函数创建的,则返回的名称对于编码而言是唯一的,可能与传递给构造函数的名称不同。 如果流已关闭,此方法可能会返回null
。- 结果
-
这个编码的历史名称,或者如果流已经关闭,可能是
null
- 另请参见:
-
Charset
-
write
public void write(int c) throws IOException
写一个字符- 重写:
-
write
在Writer
- 参数
-
c
- int指定要写入的字符 - 异常
-
IOException
- 如果发生I / O错误
-
write
public void write(char[] cbuf, int off, int len) throws IOException
写入字符数组的一部分。- Specified by:
-
write
在Writer
- 参数
-
cbuf
- 字符缓冲区 -
off
- 开始编写字符的偏移量 -
len
- 要写入的字符数 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,或len
为负数,或off + len
为负数或大于给定数组的长度 -
IOException
- 如果发生I / O错误
-
write
public void write(String str, int off, int len) throws IOException
写一个字符串的一部分。- 重写:
-
write
在Writer
- 参数
-
str
- 一个字符串 -
off
- 开始编写字符的偏移量 -
len
- 要写入的字符数 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,或len
为负数,或off + len
为负数或大于给定字符串的长度 -
IOException
- 如果发生I / O错误
-
append
public Writer append(CharSequence csq, int start, int end) throws IOException
说明从类别复制Writer
将指定字符序列的子序列附加到此作者。Appendable
。形式的这种方法的调用
out.append(csq, start, end)
时csq
不是null
完全相同的方式调用的行为out.write(csq.subSequence(start, end).toString())
- Specified by:
-
append
在接口Appendable
- 重写:
-
append
在类Writer
- 参数
-
csq
- 附加子序列的字符序列。 如果csq
是null
,则字符将被追加,因为csq
包含四个字符"null"
。 -
start
- 子序列中第一个字符的索引 -
end
- 子序列中最后一个字符后面的字符的索引 - 结果
- 这位作家
- 异常
-
IOException
- 如果发生I / O错误
-
append
public Writer append(CharSequence csq) throws IOException
描述从类复制:Writer
将指定的字符序列附加到此作者。这种
out.append(csq)
形式的方法的调用与调用的方式完全相同out.write(csq.toString())
取决于规范
toString
字符序列csq
,整个序列可以不追加。 例如,调用字符缓冲区的toString
方法将返回一个子序列,其内容取决于缓冲区的位置和限制。- Specified by:
-
append
在接口Appendable
- 重写:
-
append
在Writer
- 参数
-
csq
- 要附加的字符序列。 如果csq
是null
,那么四个字符"null"
被附加到该写入器。 - 结果
- 这位作家
- 异常
-
IOException
- 如果发生I / O错误
-
flush
public void flush() throws IOException
刷新流。- Specified by:
-
flush
在接口Flushable
- Specified by:
-
flush
在类Writer
- 异常
-
IOException
- 如果发生I / O错误
-
close
public void close() throws IOException
描述从类别复制Writer
关闭流,先刷新。 一旦流已关闭,进一步的write()或flush()调用将导致抛出IOException。 关闭以前关闭的流无效。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- Specified by:
-
close
在Writer
- 异常
-
IOException
- 如果发生I / O错误
-
-