Module java.base
Package java.io

Class 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));

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

一个格式错误的代理元素是一个高代理项后面没有跟随低代理项,或者一个低代理项前面没有跟随高代理项。

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

自从:
1.1
参见:
  • Constructor Details

    • OutputStreamWriter

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

      public OutputStreamWriter(OutputStream out)
      创建一个使用默认字符编码的OutputStreamWriter,或者当outPrintStream时,使用打印流使用的字符集。
      参数:
      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
  • Method Details

    • 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错误