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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© flying 中级黑马   /  2014-2-19 15:02  /  1368 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

假设缓冲区的大小为1024字节 那么读文件的时候 是一次读取1024字节数据到内存 还是一个字节一个字节的读
如果是一次性读到内存中 ,那么他调用了什么方法 ,如果是一个一个的读那么效率是不是和不用缓冲区的效率差不多呢
毕老师视频截图如下

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

6 个回复

倒序浏览
应该是一次读1024吧  。
回复 使用道具 举报
底层都是调用读一个方法  因为读一个写一个效率很慢 所以先把读到的数据存到数组中 然后再写
回复 使用道具 举报
如果一次读一个这样的效率不是和不用缓冲流一样吗
回复 使用道具 举报
比如1000字节 文件 你如果从D盘复制到E盘 你读一个写一个 内存中读写流跳到写出流 就要跳1000次 很影响效率
用缓冲流存起来 就要读写1一次就好了
回复 使用道具 举报
通俗打个比方,你搬1000快砖,从操场东头搬到西头,一次搬一块,你想想要来回1000次吧,搞个卡车,一次装完就运输过去,你说效率呢
回复 使用道具 举报
应该是一次读1024byte,底层应该也是一个一个的读,毕竟硬盘读数据是要用磁头一个字节一个字节的扫描。跟一次读一个的区别应该是占用一次IO资源,访问一次硬盘可以读取1024byte。如果一个一个读需要利用IO资源1024次,频繁的占用IO资源效率很低。个人认为这样其实是利用内存空间换取计算时间,如果内存够大,一次多读取些,也就是用更大的空间,应该是能够换取更多的时间。不知道这样分析对不对。

评分

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

查看全部评分

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