java.lang.Object java.io.Writer java.io.BufferedWriter
public class BufferedWriter
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。
该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。
通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。
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 |
构造方法详细信息 |
---|
public BufferedWriter(Writer out)
out
- 一个 Writer
public BufferedWriter(Writer out, int sz)
out
- 一个 Writer
sz
- 输出缓冲区的大小,是一个正整数
IllegalArgumentException
- 如果 sz <= 0
方法详细信息 |
---|
public void write(int c) throws IOException
c
- 指定要写入字符的 int。
IOException
- 如果发生 I/O 错误
public void write(char[] cbuf, int off, int len) throws IOException
一般来说,此方法将给定数组的字符存入此流的缓冲区中,根据需要刷新该缓冲区,并转到底层流。但是,如果请求的长度至少与此缓冲区大小相同,则此方法将刷新该缓冲区并将各个字符直接写入底层流。因此多余的 BufferedWriter
将不必复制数据。
cbuf
- 字符数组
off
- 开始读取字符处的偏移量
len
- 要写入的字符数
IOException
- 如果发生 I/O 错误
public void write(String s, int off, int len) throws IOException
如果 len 参数的值为负数,则不写入任何字符。这与超类中此方法的规范正好相反,它要求抛出 IndexOutOfBoundsException
。
s
- 要写入的字符串
off
- 开始读取字符处的偏移量
len
- 要写入的字符数
IOException
- 如果发生 I/O 错误
public void newLine() throws IOException
IOException
- 如果发生 I/O 错误
public void flush() throws IOException
IOException
- 如果发生 I/O 错误
public void close() throws IOException