JavaTM Platform
Standard Ed. 6

java.io
类 BufferedWriter

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

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() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。

从以下版本开始:
JDK1.1
另请参见:
PrintWriter, FileWriter, OutputStreamWriter

字段摘要
 
从类 java.io.Writer 继承的字段
lock
 
构造方法摘要
BufferedWriter(Writer out)
          创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)
          创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
 
方法摘要
 void close()
          关闭此流,但要先刷新它。
 void flush()
          刷新该流的缓冲。
 void newLine()
          写入一个行分隔符。
 void write(char[] cbuf, int off, int len)
          写入字符数组的某一部分。
 void write(int c)
          写入单个字符。
 void write(String s, int off, int len)
          写入字符串的某一部分。
 
从类 java.io.Writer 继承的方法
append, append, append, write, write
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

BufferedWriter

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

参数:
out - 一个 Writer

BufferedWriter

public BufferedWriter(Writer out,
                      int sz)
创建一个使用给定大小输出缓冲区的新缓冲字符输出流。

参数:
out - 一个 Writer
sz - 输出缓冲区的大小,是一个正整数
抛出:
IllegalArgumentException - 如果 sz <= 0
方法详细信息

write

public void write(int c)
           throws IOException
写入单个字符。

覆盖:
Writer 中的 write
参数:
c - 指定要写入字符的 int。
抛出:
IOException - 如果发生 I/O 错误

write

public void write(char[] cbuf,
                  int off,
                  int len)
           throws IOException
写入字符数组的某一部分。

一般来说,此方法将给定数组的字符存入此流的缓冲区中,根据需要刷新该缓冲区,并转到底层流。但是,如果请求的长度至少与此缓冲区大小相同,则此方法将刷新该缓冲区并将各个字符直接写入底层流。因此多余的 BufferedWriter 将不必复制数据。

指定者:
Writer 中的 write
参数:
cbuf - 字符数组
off - 开始读取字符处的偏移量
len - 要写入的字符数
抛出:
IOException - 如果发生 I/O 错误

write

public void write(String s,
                  int off,
                  int len)
           throws IOException
写入字符串的某一部分。

如果 len 参数的值为负数,则不写入任何字符。这与超类中此方法的规范正好相反,它要求抛出 IndexOutOfBoundsException

覆盖:
Writer 中的 write
参数:
s - 要写入的字符串
off - 开始读取字符处的偏移量
len - 要写入的字符数
抛出:
IOException - 如果发生 I/O 错误

newLine

public void newLine()
             throws IOException
写入一个行分隔符。行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符。

抛出:
IOException - 如果发生 I/O 错误

flush

public void flush()
           throws IOException
刷新该流的缓冲。

指定者:
接口 Flushable 中的 flush
指定者:
Writer 中的 flush
抛出:
IOException - 如果发生 I/O 错误

close

public void close()
           throws IOException
从类 Writer 复制的描述
关闭此流,但要先刷新它。在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效。

指定者:
接口 Closeable 中的 close
指定者:
Writer 中的 close
抛出:
IOException - 如果发生 I/O 错误

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策