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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊永杰 黑马帝   /  2012-5-5 00:22  /  2036 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

IO缓冲区中的readLine方法,等于也是一个一个从源数据取到内存中,然后再使用read方法读取缓冲区中的数据,进行判断换行,这样就进行了三个步骤,而且从源数据中拿的数据也是一个一个拿的,这样的效率会很高效么?对于原理这一块还理解不够深刻,请教各位!!

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
例如,有100块砖,你要从A点搬到B点,  一个选择一次搬一块到B, 这个就是一次一次的读取,
但是,你如果是这样做,那一个筐,在A点一次一次的拿进一块砖放入筐里面,一次可以放10块,然后到搬到B,相当于一行,
这一次操作要100次,而第二种操作要10次,你觉的那个效率高,o了......

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1 赞一个!

查看全部评分

回复 使用道具 举报
无论是读取一行还是读取多个字符,最终取都是在硬盘上一个一个的读取,所以最终还是在read方法在一次读一个。
readLine方法内部封装了了数据,先将读取到的数据一个一个的存储到数组里,不包含仍和终止符,以\n为标识结尾。
其实readLine方法就是把数据临时给存起来了,内部已经判断好要存储的数据量,再一次性返回给你,而read方法则是读到一个返回一个,读到一个返回一个。

举个列子:
  有一车货物需要你从车上搬到仓库里,给你两个选择。
1.一个一个的从车上搬到仓库里,一次一个,不停的来回,直到把车上的货物搬完为止。
2.给你一辆能装10个货物的手推车,先从车上搬10个到手推车上,再推到仓库里。一次10个,直到把车上的货物搬完为止。

虽然说,第2种方案也是先将货物一个一个的搬到手推车上,但是减少了从货车-仓库的来回次数。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1 赞一个!

查看全部评分

回复 使用道具 举报
更正一下,
  readLine方法内部封装了数组,
打字太快,打成数据了。
回复 使用道具 举报
补充一下,
  手推车就相当于readLine方法内部的数组
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马