黑马程序员技术交流社区

标题: IO中的BufferedInputStream的效率 [打印本页]

作者: 汪洋大海    时间: 2013-11-20 22:42
标题: IO中的BufferedInputStream的效率
一直不是很明白BufferedInputStream和FileInputStream有多少区别。
感觉应该差不多吧。刚才学习的时候测了一下。相差真的好大。读一个100M的视频。Buffer要快0.5秒。


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


用Buffer为什么会快?


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

作者: 明月几时有    时间: 2013-11-20 22:45
BufferInputstream缓冲区是1024*8,也就是8KB,当然要快了
作者: hurryup    时间: 2013-11-20 23:00
BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节。

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

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


作者: 侠客梦的懒猫    时间: 2013-11-20 23:13
BufferedInputStream和FileInputStream最大的差别就是有没有缓冲区,有缓冲区的效率高,为什么呢?
打个比方:两个和尚去山下挑水,一个叫FileInputStream的和尚拿一滴水跑上山,又下山来挑水,重复这个过程,(其实和尚就像是读取文件的磁头),但BufferedInputStream不一样,他拿两只桶,当桶满了,就上山,同样的水量,这样效率谁更加有效率可想而知。(桶就像缓冲区)





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