Module java.base
Package java.io

Class BufferedWriter

java.lang.Object
java.io.Writer
java.io.BufferedWriter
所有已实现的接口:
Closeable, Flushable, Appendable, AutoCloseable

public class BufferedWriter extends Writer
向字符输出流写入文本,缓冲字符以便有效地写入单个字符、数组和字符串。

可以指定缓冲区大小,也可以接受默认大小。默认大小足够大,适用于大多数情况。

提供了一个newLine()方法,该方法使用平台自己定义的行分隔符,由系统属性line.separator定义。并非所有平台都使用换行字符('\n')来终止行。因此,最好调用此方法来终止每行输出,而不是直接写入换行字符。

一般来说,Writer会立即将其输出发送到底层字符或字节流。除非需要立即输出,建议在可能导致write()操作代价高昂的Writer周围包装一个BufferedWriter,例如FileWriters和OutputStreamWriters。例如,

    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
将缓冲PrintWriter的输出到文件。如果没有缓冲,每次调用print()方法都会导致字符转换为字节,然后立即写入文件,这可能非常低效。
自版本:
1.1
参见:
  • Constructor Details

    • BufferedWriter

      public BufferedWriter(Writer out)
      创建一个使用默认大小输出缓冲区的缓冲字符输出流。
      参数:
      out - 一个Writer
    • BufferedWriter

      public BufferedWriter(Writer out, int sz)
      创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
      参数:
      out - 一个Writer
      sz - 输出缓冲区大小,正整数
      抛出:
      IllegalArgumentException - 如果sz <= 0
  • Method Details

    • 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
      写入字符数组的一部分。

      通常,此方法将给定数组中的字符存储到此流的缓冲区中,根据需要刷新缓冲区到底层流。但是,如果请求的长度至少与缓冲区一样大,则此方法将刷新缓冲区并直接将字符写入底层流。因此,多余的BufferedWriter不会不必要地复制数据。

      指定者:
      write 在类中 Writer
      参数:
      cbuf - 一个字符数组
      off - 开始读取字符的偏移量
      len - 要写入的字符数
      抛出:
      IndexOutOfBoundsException - 如果off为负数,或len为负数,或off + len为负数或大于给定数组的长度
      IOException - 如果发生I/O错误
    • write

      public void write(String s, int off, int len) throws IOException
      写入字符串的一部分。
      覆盖:
      write 在类中 Writer
      实现要求:
      虽然在超类中对此方法的规范建议如果len为负数或off + len为负数,则抛出一个IndexOutOfBoundsException,但是此类中的实现在这些情况下不会抛出异常,而是简单地不写入任何字符。
      参数:
      s - 要写入的字符串
      off - 开始读取字符的偏移量
      len - 要写入的字符数
      抛出:
      IndexOutOfBoundsException - 如果off为负数,或off + len大于给定字符串的长度
      IOException - 如果发生I/O错误
    • newLine

      public void newLine() throws IOException
      写入行分隔符。行分隔符字符串由系统属性line.separator定义,不一定是单个换行符('\n')字符。
      抛出:
      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错误