Module  java.base
软件包  java.io

Class BufferedWriter

  • All Implemented Interfaces:
    CloseableFlushableAppendableAutoCloseable


    public class BufferedWriter
    extends Writer
    将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。

    可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。

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

    一般来说,Writer将其输出立即发送到底层字符或字节流。 除非需要提示输出,否则建议将BufferedWriter包装在其write()操作可能很昂贵的Writer上,例如FileWriters和OutputStreamWriters。 例如,

      PrintWriter out
       = new PrintWriter(new BufferedWriter(new FileWriter("foo.out"))); 
    将缓冲PrintWriter的输出到文件。 没有缓冲,每次调用print()方法都会使字符转换为字节,然后立即写入文件,这可能非常低效。
    从以下版本开始:
    1.1
    另请参见:
    PrintWriterFileWriterOutputStreamWriterFiles.newBufferedWriter(java.nio.file.Path, java.nio.charset.Charset, java.nio.file.OpenOption...)
    • 构造方法详细信息

      • BufferedWriter

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

        public BufferedWriter​(Writer out,
                              int sz)
        创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。
        参数
        out - 作家
        sz - 输出缓冲区大小,正整数
        异常
        IllegalArgumentException - 如果是 sz <= 0
    • 方法详细信息

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

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

        Specified by:
        writeWriter
        参数
        cbuf - 一个字符数组
        off - 开始读取字符的偏移量
        len - 要写入的字符数
        异常
        IndexOutOfBoundsException - 如果 off为负数,或 len为负数,或 off + len为负数或大于给定数组的长度
        IOException - 如果发生I / O错误
      • write

        public void write​(String s,
                          int off,
                          int len)
                   throws IOException
        写一个字符串的一部分。
        重写:
        writeWriter
        实现要求:
        虽然superclass中此方法的规范建议如果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错误
      • close

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