首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Buffered缓存流

Buffered缓存流

作者头像
端碗吹水
发布2020-09-23 10:24:49
发布2020-09-23 10:24:49
3870
举报

处理流:

处理流是对一个已经存在的流的连接和封装,利用的是装饰设计模式,通过所封装后的流进行功能调用实现数据读写,例如BufferedInputStream,处理流的构造器总是需要带一个其他流的对象作为参数。一个流经过其他流的多次包装,称为流的连接,例如FileInputStream的对象经过BufferedInputStream包装后,才使用BufferedInputStream的对象去调用读写数据的方法,那么这个过程就形成了一个流的连接。

  读写流程示意:

加解密流程示意:

常用的处理流:

FileInputStream和FileOutputStream是基本的流。

缓存流:

BufferedInputStream

BufferedOutputStream

基本数据流:

DataInputStream

DataOutputStream

对象流:

ObjectInputStream

ObjectOutputStream

缓存流:

缓存流作为缓冲读写数据使用,它有一个大小为8k的缓存池,加上缓存流的话在读取数据的时候每次就会一次性读取8k,然后读完了再读取8k,输出也是如此,所以能够优化读写上的速度,但是只适合用于单个字节或少量字节的读取或输出上的事情上才有效果。因为如果是批量读取的话,每次读取的字节数量都比较大,就没必要多此一举去使用缓存流了,使用缓存流的话如果不是马上调用close关闭,就需要调用flush方法来清理缓存。

  流程示意:

代码示例:

  这是一个拷贝文件的代码示例,用于对比读取单个字节的情况下,使用缓存流和不使用缓存流的区别,并且对比批量读取下使用缓存流和不使用缓存流的区别:

单个字节读取使用缓存流的方式:

运行结果:

单个字节读取不使用缓存流的方式:

运行结果:

从结果可以看出,缓存流在这种单个字节读取的速度优化上效果是相当好。

批量读取下使用缓存流的方式:

运行结果:

批量读取下不使用缓存流的方式:

运行结果:

  从结果可以看出,缓存流在这种批量字节读取的速度优化上效果是相差无几的,甚至有时候加上缓存流反而会变慢,所以在这种批量读取的方式上不需要用缓存流。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/10/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档