JavaIO——带缓冲的输入输出流

FilterInputStream与FilterOutputStream分别是InputStream与OutputStream的子类,Filter输入输出流本身只是简单覆写了基类的方法,没什么值得说的,但是它的子类Buffered流是有自己的特点的。

BufferedInputStream

BufferedInputStream能够为输入流提供缓冲区,提高IO速度。这样你可以一次读取一大块的数据,而不用从网络或是磁盘中一次一个字节的读取。特别是在读取大量的磁盘数据时,缓冲可以很大程度的提高IO速度。

将输入流包装到BufferedInputStream中,就可以为此输入流加上缓冲。

InputStream inputStream = new BufferedInputStream(new FileInputStream("D:\\test\\test.txt"));

通过构造函数,将FileInputStream包装到BufferedInputStream中,为输入流设置了缓冲区,默认大小为8192字节。也可以手动设置缓冲区大小。

InputStream inputStream = new BufferedInputStream(new FileInputStream("D:\\test\\test.txt"), 8 * 1024);

上述代码手动设置缓冲区大小为8KB。最好把缓冲区设置为1024字节的整数倍,这样可以更有效的利用内置缓冲区的磁盘。

除了可以为输入流设置缓冲区外,BufferedInputStream基本与InputStream类似。

BufferedOutputStream

与BufferedInputStream类似,BufferedOutputStream可以为输出流提供缓冲区。

OutputStream outputStream = new BufferedOutputStream(new FileOutputStream("D:\\test\\test01.txt"));

缓冲区默认大小也为8192字节。也可以手动设置缓冲区大小。

OutputStream outputStream = new BufferedOutputStream(new FileOutputStream("D:\\test\\test01.txt"), 8 * 1024);

同样建议把缓冲区大小设置成1024的整数倍。

除了能够为输出流提供缓冲区以外,其余方面BufferedOutputStream基本与OutputStream类似。唯一不同的时,你需要手动flush()方法确保写入到此输出流的数据真正写入到磁盘或者网络中。

BufferedReader

BufferedReader功能与BufferedInputStream类似,都可以为输入流增加缓冲区,只不过一个针对字节流,一个针对字符流。

把Reader包装到BufferedReader中,就可以为Reader添加缓冲区。缓冲区默认大小为8192字节。

Reader reader = new BufferedReader(new FileReader("D:\\test\\test.txt"));

也可以通过在构造函数中传递参数,手动定义缓冲区大小。

Reader reader = new BufferedReader(new FileReader("D:\\test\\test.txt"), 8 * 1024);

最好把缓冲区大小设置成1024字节的整数倍,这样能更高效地利用内置缓冲区的磁盘。

BufferedReader还有一个额外readLine()方法,可以方便地一次性读取一整行字符。

BufferedWriter

与BufferedReader类似,BufferedWriter可以为输出流提供缓冲区。可以构造一个使用默认大小缓冲区的BufferedWriter,默认大小为8192字节。

Writer writer = new BufferedWriter(new FileWriter("D:\\test\\test01.txt"));

也可以通过在构造函数中传递参数,手动定义缓冲区大小。

Writer writer = new BufferedWriter(new FileWriter("D:\\test\\test01.txt"), 8 * 1024);

类似地,BufferedWriter也提供了writeLine()方法,能够把一行字符写入到底层的字符输出流中。
值得注意是,你需要手动flush()方法确保写入到此输出流的数据真正写入到磁盘或者网络中。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值