Module  java.base
软件包  java.io

Class OutputStreamWriter

  • All Implemented Interfaces:
    CloseableFlushableAppendableAutoCloseable
    已知直接子类:
    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
    另请参见:
    BufferedWriterOutputStreamCharset
    • 构造方法详细信息

      • 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
        写一个字符
        重写:
        writeWriter
        参数
        c - int指定要写入的字符
        异常
        IOException - 如果发生I / O错误
      • write

        public void write​(char[] cbuf,
                          int off,
                          int len)
                   throws IOException
        写入字符数组的一部分。
        Specified by:
        writeWriter
        参数
        cbuf - 字符缓冲区
        off - 开始编写字符的偏移量
        len - 要写入的字符数
        异常
        IndexOutOfBoundsException - 如果 off为负数,或 len为负数,或 off + len为负数或大于给定数组的长度
        IOException - 如果发生I / O错误
      • write

        public void write​(String str,
                          int off,
                          int len)
                   throws IOException
        写一个字符串的一部分。
        重写:
        writeWriter
        参数
        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 - 附加子序列的字符序列。 如果csqnull ,则字符将被追加,因为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
        重写:
        appendWriter
        参数
        csq - 要附加的字符序列。 如果csqnull ,那么四个字符"null"被附加到该写入器。
        结果
        这位作家
        异常
        IOException - 如果发生I / O错误
      • close

        public void close​()
                   throws IOException
        描述从类别复制Writer
        关闭流,先刷新。 一旦流已关闭,进一步的write()或flush()调用将导致抛出IOException。 关闭以前关闭的流无效。
        Specified by:
        close在接口 AutoCloseable
        Specified by:
        close在接口 Closeable
        Specified by:
        closeWriter
        异常
        IOException - 如果发生I / O错误