BufferedWriter
java.lang.Object
|—java.io.Writer
|—|—java.io.BufferedWriter
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() 方法都会导致字符转换为字节,然后立即写入文件,这可能非常低效。
Since:
JDK1.1
字段摘要
从类 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.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从类 java.io.Writer 继承的方法 |
---|
append, append, append, write, write |
构造函数详细信息
BufferedWriter
public BufferedWriter(Writer out)
创建使用默认大小的输出缓冲区的缓冲字符输出流。
参数:
参数名称 | 参数描述 |
---|---|
out | 输入流 |
BufferedWriter
public BufferedWriter(Writer out, int sz)
创建一个使用给定大小的输出缓冲区的新缓冲字符输出流。
参数:
参数名称 | 参数描述 |
---|---|
out | 输入流 |
sz | 输出缓冲区大小,一个正整数 |
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果 sz <= 0 |
方法详情
write
public void write(int c) throws IOException
写入单个字符。
覆盖:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
c | int 指定要写入的字符 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
write
public void write(char[] cbuf, int off, int len) throws IOException
写入字符数组的一部分。
通常,此方法将给定数组中的字符存储到此流的缓冲区中,并根据需要将缓冲区刷新到底层流。 但是,如果请求的长度至少与缓冲区一样大,则此方法将刷新缓冲区并将字符直接写入底层流。 因此冗余的 BufferedWriters 不会不必要地复制数据。
指定者:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
cbuf | 一个字符数组 |
off | 开始读取字符的偏移量 |
len | 要写入的字符数 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
write
public void write(String s, int off, int len) throws IOException
写入字符串的一部分。
如果 len 参数的值为负数,则不写入任何字符。 这与超类中该方法的规范相反,该规范要求抛出 IndexOutOfBoundsException。
覆盖:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
s | 要写入的字符串 |
off | 开始读取字符的偏移量 |
len | 要写入的字符数 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
newLine
public void newLine() throws IOException
写入行分隔符。 行分隔符字符串由系统属性 line.separator 定义,不一定是单个换行符 (‘\n’)。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
flush
public void flush() throws IOException
冲洗流。
指定者:
在接口 Flushable 中刷新
指定者:
在 Writer 类中刷新
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |
close
public void close() throws IOException
从班级复制的描述:Writer
关闭流,首先刷新它。 一旦流被关闭,进一步的 write() 或 flush() 调用将导致抛出 IOException。 关闭以前关闭的流没有效果。
指定者:
在接口 AutoCloseable 中关闭
指定者:
在接口Closeable中关闭
指定者:
关闭类Writer
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误 |