A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘源 中级黑马   /  2012-8-16 17:30  /  1532 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘源 于 2012-8-16 22:12 编辑

BufferedInputStream是InputStream缓冲区,那BufferedInputStream到底提高了什么效率,他们的read()一样,
BufferedInputStream:
read(byte[] b, int off, int len)  从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。
InputStream:                 read(byte[] b, int off, int len)  将输入流中最多 len 个数据字节读入 byte 数组。
这2个方法感觉也一模一样,请问到底提高了什么效率。
例如:字符流,BufferedReader里面的readLine(),一样里面有一个一次读一行的缓存,
那BufferedInputStream里面有什么缓冲,如果都是1个字节或者1个字节数组那样读,为什么它的效率就更高呢?
问题:缓存和缓冲区是什么关系,为什么多了个缓存之后读的效率会更高了呢。我知道不用缓存是读一个打印在控制台上一个。
那用了缓存之后,是一次读一堆,放到缓存中呢?还是一次读一个,然后放到缓存中呢?
"问题已解决"

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
缓冲区就好像是一个容器一样,InputStream 没有这个容器,可就是,它读一个字节,outputstream 就写一个字节,

而,BufferedInputStream 不一样,它只要读到缓冲里面,就可以了,不用看是不是bufferedoutputStream读没读,  

就好像运水一样, 没有这个容器,你拿一杯水送过去,必须有人接过去(bufferedoutputstream)你才可以在回去,拿另一杯,
如果中间有,容易,你拿过去,直接倒到容器里面,再回去拿就OK了,

而BufferedReader  是每次操作一个字符,  bufferedinputstream,每次是操作一个字节,

就好像一个大杯子,和一个小杯子的区别。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马