返回介绍

java.io 类 BufferedWriter

发布于 2019-10-04 09:50:41 字数 6650 浏览 829 评论 0 收藏 0

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(Writerout)

创建一个使用默认大小输出缓冲区的缓冲字符输出流。

BufferedWriter(Writerout, intsz)

创建一个使用指定大小输出缓冲区的新缓冲字符输出流。

方法摘要
voidclose()

关闭该流。

voidflush()

刷新该流的缓冲。

voidnewLine()

写入一个行分隔符。

voidwrite(char[]cbuf, intoff, intlen)

写入字符数组的某一部分。

voidwrite(intc)

写入单个字符。

voidwrite(Strings, intoff, intlen)

写入字符串的某一部分。

从类 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(Writerout)
创建一个使用默认大小输出缓冲区的缓冲字符输出流。
参数:
out - 一个 Writer

BufferedWriter

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

方法详细信息

write

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

write

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

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

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

write

public void write(Strings,
                  intoff,
                  intlen)
           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
关闭该流。
指定者:
接口 Closeable 中的 close
指定者:
Writer 中的 close
抛出:
IOException - 如果发生 I/O 错误

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文