| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:关于缓冲区IO
只看楼主 加入收藏
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
结帖率:81.48%
收藏
已结贴  问题点数:18 回复次数:1 
关于缓冲区IO
在学IO流 在许多流中,比如FileInputStream中的read方法有这个read(byte[] b, int off, int len) ,这里把字节读到字节数组中,既然有了缓冲的数组,为什么还有bufferedinputsteam来装饰?
搜索更多相关主题的帖子: 缓冲区 
2015-07-07 14:23
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:18 
JAVA中常用IO流类:FileInputStream和FileOutputStream
http://blog.

最简单直接的使用方法如上面的帖子所写
但是执行效率不高,从而产生了BufferedInputStream,如下帖

BufferedInputStream学习笔记
http://icanfly.

关键的区别在于:
整个fill的过程,可以看作是BufferedInputStream对外提供滑动读取的功能实现,通过预先读入一整段原始输入流数据至缓冲区中,而外界对BufferedInputStream的读取操作实际上是在缓冲区上进行,如果读取的数据超过了缓冲区的范围,那么BufferedInputStream负责重新从原始输入流中载入下一截数据填充缓冲区,然后外界继续通过缓冲区进行数据读取。这样的设计的好处是:避免了大量的磁盘IO,因为原始的InputStream类实现的read是即时读取的,即每一次读取都会是一次磁盘IO操作(哪怕只读取了1个字节的数据),可想而知,如果数据量巨大,这样的磁盘消耗非常可怕。而通过缓冲区的实现,读取可以读取缓冲区中的内容,当读取超过缓冲区的内容后再进行一次磁盘IO,载入一段数据填充缓冲,那么下一次读取一般情况下就直接可以从缓冲区读取,减少了磁盘IO。
2015-07-11 23:37
快速回复:关于缓冲区IO
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023901 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved