黑马程序员技术交流社区
标题:
关于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