模块 java.base
 java.io

类 OutputStreamWriter

java.lang.Object
java.io.Writer
java.io.OutputStreamWriter
所有已实现的接口:
Closeable , Flushable , Appendable , AutoCloseable
已知子类:
FileWriter

public class OutputStreamWriter extends Writer
OutputStreamWriter 是字符流到字节流的桥梁:写入其中的字符使用指定的 charset 编码为字节。它使用的字符集可以通过名称指定,也可以明确给出,或者可以接受默认字符集。

每次调用 write() 方法都会导致在给定字符上调用编码转换器。在写入底层输出流之前,生成的字节会累积在缓冲区中。请注意,传递给 write() 方法的字符不会被缓冲。

为了获得最高效率,请考虑将 OutputStreamWriter 包装在 BufferedWriter 中,以避免频繁调用转换器。例如:

 Writer out
  = new BufferedWriter(new OutputStreamWriter(anOutputStream));
 

A 代理对是由两个 char 值的序列表示的字符:A高的在范围 '\uD800' 到 '\uDBFF' 后跟一个代理项低的在“\uDC00”到“\uDFFF”范围内进行代理。

A 畸形替代元素是后面没有低代理项的高代理项,或者是前面没有高代理项的低代理项。

此类总是用字符集的默认值替换格式错误的代理项元素和不可映射的字符序列置换顺序.当需要对编码过程进行更多控制时,应使用 CharsetEncoder 类。

自从:
1.1
参见:
  • 构造方法详细信息

    • OutputStreamWriter

      public OutputStreamWriter(OutputStream  out, String  charsetName) throws UnsupportedEncodingException
      创建一个使用指定字符集的 OutputStreamWriter。
      参数:
      out - 一个输出流
      charsetName - 支持的名称 charset
      抛出:
      UnsupportedEncodingException - 如果不支持命名编码
    • OutputStreamWriter

      public OutputStreamWriter(OutputStream  out)
      创建一个使用默认字符编码的 OutputStreamWriter,或者其中 outPrintStream ,打印流使用的字符集。
      参数:
      out - 一个输出流
      参见:
    • OutputStreamWriter

      public OutputStreamWriter(OutputStream  out, Charset  cs)
      创建一个使用给定字符集的 OutputStreamWriter。
      参数:
      out - 一个输出流
      cs - 一个字符集
      自从:
      1.4
    • OutputStreamWriter

      public OutputStreamWriter(OutputStream  out, CharsetEncoder  enc)
      创建一个使用给定字符集编码器的 OutputStreamWriter。
      参数:
      out - 一个输出流
      enc - 字符集编码器
      自从:
      1.4
  • 方法详情

    • getEncoding

      public String  getEncoding()
      返回此流使用的字符编码的名称。

      如果编码有历史名称,则返回该名称;否则返回编码的规范名称。

      如果此实例是使用 OutputStreamWriter(OutputStream, String) 构造函数创建的,则返回的名称对于编码是唯一的,可能与传递给构造函数的名称不同。如果流已关闭,此方法可能会返回 null

      返回:
      此编码的历史名称,如果流已关闭,则可能是 null
      参见:
    • 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
      写入字符数组的一部分。
      指定者:
      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 错误
    • flush

      public void flush() throws IOException
      冲洗流。
      指定者:
      flush 在接口 Flushable
      指定者:
      flush 在类 Writer
      抛出:
      IOException - 如果发生 I/O 错误
    • close

      public void close() throws IOException
      从类复制的描述:Writer
      关闭流,首先冲洗它。流关闭后,进一步的 write() 或 flush() 调用将导致抛出 IOException。关闭之前关闭的流没有任何效果。
      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      指定者:
      close 在类 Writer
      抛出:
      IOException - 如果发生 I/O 错误