黑马程序员技术交流社区

标题: IO缓冲区中readline方法请教! [打印本页]

作者: 樊永杰    时间: 2012-5-5 00:22
标题: IO缓冲区中readline方法请教!
IO缓冲区中的readLine方法,等于也是一个一个从源数据取到内存中,然后再使用read方法读取缓冲区中的数据,进行判断换行,这样就进行了三个步骤,而且从源数据中拿的数据也是一个一个拿的,这样的效率会很高效么?对于原理这一块还理解不够深刻,请教各位!!
作者: 何阳    时间: 2012-5-5 00:29
例如,有100块砖,你要从A点搬到B点,  一个选择一次搬一块到B, 这个就是一次一次的读取,
但是,你如果是这样做,那一个筐,在A点一次一次的拿进一块砖放入筐里面,一次可以放10块,然后到搬到B,相当于一行,
这一次操作要100次,而第二种操作要10次,你觉的那个效率高,o了......
作者: 谭景宾    时间: 2012-5-5 01:19
无论是读取一行还是读取多个字符,最终取都是在硬盘上一个一个的读取,所以最终还是在read方法在一次读一个。
readLine方法内部封装了了数据,先将读取到的数据一个一个的存储到数组里,不包含仍和终止符,以\n为标识结尾。
其实readLine方法就是把数据临时给存起来了,内部已经判断好要存储的数据量,再一次性返回给你,而read方法则是读到一个返回一个,读到一个返回一个。

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

虽然说,第2种方案也是先将货物一个一个的搬到手推车上,但是减少了从货车-仓库的来回次数。
作者: 谭景宾    时间: 2012-5-5 01:22
更正一下,
  readLine方法内部封装了数组,
打字太快,打成数据了。
作者: 谭景宾    时间: 2012-5-5 01:27
补充一下,
  手推车就相当于readLine方法内部的数组




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