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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪洋大海 中级黑马   /  2013-11-20 22:42  /  1250 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一直不是很明白BufferedInputStream和FileInputStream有多少区别。
感觉应该差不多吧。刚才学习的时候测了一下。相差真的好大。读一个100M的视频。Buffer要快0.5秒。


两者用的是同样大的数组。都是 byte[1024]。


用Buffer为什么会快?


学知识,求原理。举一反三。求加分。

3 个回复

倒序浏览
BufferInputstream缓冲区是1024*8,也就是8KB,当然要快了
回复 使用道具 举报
BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节。

FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。

FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

回复 使用道具 举报
BufferedInputStream和FileInputStream最大的差别就是有没有缓冲区,有缓冲区的效率高,为什么呢?
打个比方:两个和尚去山下挑水,一个叫FileInputStream的和尚拿一滴水跑上山,又下山来挑水,重复这个过程,(其实和尚就像是读取文件的磁头),但BufferedInputStream不一样,他拿两只桶,当桶满了,就上山,同样的水量,这样效率谁更加有效率可想而知。(桶就像缓冲区)

评分

参与人数 1技术分 +1 收起 理由
To + 1

查看全部评分

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