模块 java.base
 java.io

类 Writer

java.lang.Object
java.io.Writer
所有已实现的接口:
Closeable , Flushable , Appendable , AutoCloseable
已知子类:
BufferedWriter , CharArrayWriter , FilterWriter , OutputStreamWriter , PipedWriter , PrintWriter , StringWriter

public abstract class Writer extends Object implements Appendable , Closeable , Flushable
用于写入字符流的抽象类。子类必须实现的唯一方法是 write(char[], int, int)、flush() 和 close()。然而,大多数子类将重写此处定义的一些方法,以提供更高的效率和/或附加功能。
自从:
1.1
参见:
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    protected Object
    用于同步此流上的操作的对象。
  • 构造方法总结

    构造方法
    修饰符
    构造方法
    描述
    protected
    创建一个新的字符流编写器,其关键部分将在编写器本身上同步。
    protected
    Writer(Object lock)
    创建一个新的字符流编写器,其关键部分将在给定对象上同步。
  • 方法总结

    修饰符和类型
    方法
    描述
    append(char c)
    将指定的字符附加到此编写器。
    将指定的字符序列附加到此编写器。
    append(CharSequence csq, int start, int end)
    将指定字符序列的子序列附加到此 writer。
    abstract void
    关闭流,首先冲洗它。
    abstract void
    冲洗流。
    static Writer
    返回一个丢弃所有字符的新 Writer
    void
    write(char[] cbuf)
    写入一个字符数组。
    abstract void
    write(char[] cbuf, int off, int len)
    写入字符数组的一部分。
    void
    write(int c)
    写入单个字符。
    void
    write(String str)
    写一个字符串。
    void
    write(String str, int off, int len)
    写入字符串的一部分。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细信息

    • 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

      未指定用于同步返回的 Writer 上的操作的 object

      返回:
      一个 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
      将指定的字符序列附加到此编写器。

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

         out.write(csq.toString()) 

      根据字符序列 csqtoString 规范,可能不会附加整个序列。例如,调用字符缓冲区的 toString 方法将返回一个子序列,其内容取决于缓冲区的位置和限制。

      指定者:
      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

      csq 不是 null 时调用 out.append(csq, start, end) 形式的方法的行为与调用完全相同

      
         out.write(csq.subSequence(start, end).toString())
        
      指定者:
      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
      将指定的字符附加到此编写器。

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

         out.write(c) 
      指定者:
      append 在接口 Appendable
      参数:
      c - 要追加的 16 位字符
      返回:
      这位作家
      抛出:
      IOException - 如果发生 I/O 错误
      自从:
      1.5
    • flush

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

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

      指定者:
      flush 在接口 Flushable
      抛出:
      IOException - 如果发生 I/O 错误
    • close

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