黑马程序员技术交流社区

标题: 关于InputStream的疑问。 [打印本页]

作者: 刘源    时间: 2012-8-16 17:30
标题: 关于InputStream的疑问。
本帖最后由 刘源 于 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个字节数组那样读,为什么它的效率就更高呢?
问题:缓存和缓冲区是什么关系,为什么多了个缓存之后读的效率会更高了呢。我知道不用缓存是读一个打印在控制台上一个。
那用了缓存之后,是一次读一堆,放到缓存中呢?还是一次读一个,然后放到缓存中呢?
"问题已解决"

作者: 刘圣伟    时间: 2012-8-16 18:02
缓冲区就好像是一个容器一样,InputStream 没有这个容器,可就是,它读一个字节,outputstream 就写一个字节,

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

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

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2