模块  java.base
软件包  java.io

Class Writer

    • 字段详细信息

      • lock

        protected Object lock
        用于同步此流上的操作的对象。 为了提高效率,字符流对象可以使用除自身之外的对象来保护关键部分。 因此,子类应使用此字段中的对象而不是this或同步方法。
    • 构造方法详细信息

      • Writer

        protected Writer()
        创建一个新的字符流编写器,其关键部分将在编写器本身上同步。
      • Writer

        protected Writer​(Object lock)
        创建一个新的字符流编写器,其关键部分将在给定对象上同步。
        参数
        lock - 要同步的对象
    • 方法详细信息

      • nullWriter

        public static Writer nullWriter()
        返回一个新的Writer ,它丢弃所有字符。 返回的流最初是打开的。 通过调用close()方法关闭流。 close()后续调用无效。

        虽然流是开放的, append(char)append(CharSequence)append(CharSequence, int, int)flush()write(int)write(char[])write(char[], int, int)方法什么也不做。 关闭流后,这些方法全部抛出IOException

        object用来对返回的同步操作Writer未指定。

        结果
        Writer丢弃所有字符
        从以下版本开始:
        11
      • write

        public void write​(int c)
                   throws IOException
        写一个字符。 要写入的字符包含在给定整数值的16个低位中; 忽略16个高位。

        打算支持高效单字符输出的子类应该重写此方法。

        参数
        c - 指定要写入的字符的int
        异常
        IOException - 如果发生I / O错误
      • write

        public void write​(char[] cbuf)
                   throws IOException
        写一个字符数组。
        参数
        cbuf - 要写入的字符数组
        异常
        IOException - 如果发生I / O错误
      • write

        public abstract void write​(char[] cbuf,
                                   int off,
                                   int len)
                            throws IOException
        写一个字符数组的一部分。
        参数
        cbuf - 字符数组
        off - 开始编写字符的偏移量
        len - 要写入的字符数
        异常
        IndexOutOfBoundsException - 如果 off为负数,或 len为负数,或者 off + len为负数或大于给定数组的长度,则实现应抛出此异常
        IOException - 如果发生I / O错误
      • write

        public void write​(String str)
                   throws IOException
        写一个字符串。
        参数
        str - 要写入的字符串
        异常
        IOException - 如果发生I / O错误
      • write

        public void write​(String str,
                          int off,
                          int len)
                   throws IOException
        写一个字符串的一部分。
        实现要求:
        此类中的实现会针对指示的条件抛出IndexOutOfBoundsException ; 重写方法可以选择不这样做。
        参数
        str - 一个字符串
        off - 开始写入字符的偏移量
        len - 要写入的字符数
        异常
        IndexOutOfBoundsException - 如果 off为负数,或者 len为负数,或者 off + len为负数或大于给定字符串的长度,则实现应抛出此异常
        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
        参数
        csq - 要追加的字符序列。 如果csqnull ,则四个字符"null"将附加到此writer。
        结果
        这位作家
        异常
        IOException - 如果发生I / O错误
        从以下版本开始:
        1.5
      • 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
        参数
        csq - 将附加子序列的字符序列。 如果csqnull ,则将附加字符,就像csq包含四个字符"null"
        start - 子序列中第一个字符的索引
        end - 子序列中最后一个字符后面的字符的索引
        结果
        这位作家
        异常
        IndexOutOfBoundsException - 如果 startend为负数, start大于 end ,或 end大于 csq.length()
        IOException - 如果发生I / O错误
        从以下版本开始:
        1.5
      • append

        public Writer append​(char c)
                      throws IOException
        将指定的字符追加到此writer。

        调用out.append(c)形式的此方法的行为与调用完全相同

          out.write(c) 
        Specified by:
        append在界面 Appendable
        参数
        c - 要追加的16位字符
        结果
        这位作家
        异常
        IOException - 如果发生I / O错误
        从以下版本开始:
        1.5
      • flush

        public abstract void flush()
                            throws IOException
        刷新流。 如果流已从缓冲区中的各种write()方法保存任何字符,请立即将它们写入其预期目标。 然后,如果该目标是另一个字符或字节流,请将其刷新。 因此,一次flush()调用将刷新Writers和OutputStreams链中的所有缓冲区。

        如果该流的预期目的地是由底层操作系统提供的抽象,例如文件,则刷新流仅保证先前写入流的字节被传递到操作系统以进行写入; 它不能保证它们实际上写入物理设备,如磁盘驱动器。

        Specified by:
        flush在界面 Flushable
        异常
        IOException - 如果发生I / O错误
      • close

        public abstract void close()
                            throws IOException
        关闭流,先冲洗它。 关闭流后,进一步的write()或flush()调用将导致抛出IOException。 关闭先前关闭的流无效。
        Specified by:
        close在接口 AutoCloseable
        Specified by:
        close ,界面 Closeable
        异常
        IOException - 如果发生I / O错误