您的位置:首页 > Web前端

Buffered缓存流

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







加解密流程示意:






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







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

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




运行结果:





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




运行结果:



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


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




运行结果:







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




运行结果:



从结果可以看出,缓存流在这种批量字节读取的速度优化上效果是相差无几的,甚至有时候加上缓存流反而会变慢,所以在这种批量读取的方式上不需要用缓存流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Buffered 缓存流