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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhousaowen 黑马帝   /  2011-7-21 16:34  /  5760 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

BufferedInputStream和ByteArrayInputStream都有缓冲区,他们的性质是一样的吗?当缓冲区内的内容超过的时候会自动增加的大吗?

3 个回复

倒序浏览
黑马网友  发表于 2011-7-21 19:47:52
沙发

回复 楼主 的帖子

不一样的
它类似一个内存虚拟文件或内存映像文件,它默认是32个字节的缓冲区,但是可随着数据增多自动增长
它可以存储整个输入或输出流,可以对内容进行很多操作

BufferedInputStream也是增加了内存缓冲区,但是目的是能允许Java程序可以一次不只操作一个字节,可以实现数据部分回流(可进行mark,skip等方法,readLine也成为可能),但是size一般定下来也变不了了

我个人是把ByteArrayInputStream想象成一个文件,不在硬盘上的。
把BufferedInputStream想象成一个定长管道,它可以操作很多个字节,但是不能当成整个文件那样操作

如果错误理解还请指出
回复 使用道具 举报
黑马网友  发表于 2011-7-21 21:38:40
藤椅
同意  把BufferedInputStream想象成一个定长管道 ,是包装类。但是把ByteArrayInputStream想象成一个虚拟的文件有点其他的看法:我还是把他也看做管道,里面流的是byte【】;而包装类就像是一根管道为了弥补一些管道的不足而套在这些管道之上的管道。
请指正!
回复 使用道具 举报
黑马网友  发表于 2011-7-21 21:39:35
板凳

回复 沙发 的帖子

同意  把BufferedInputStream想象成一个定长管道 ,是包装类。但是把ByteArrayInputStream想象成一个虚拟的文件有点其他的看法:我还是把他也看做管道,里面流的是byte【】;而包装类就像是一根管道为了弥补一些管道的不足而套在这些管道之上的管道。
请指正!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马