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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


JDK API中这么说的“从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。“用FileReader的read()先制定一个长度,不也是缓冲么?BufferedReader有什么更快的原理么?新手求科普

16 个回复

正序浏览
BufferedReader不是能一行一行读入吗?  个人理解这样快一点吧。。  也不知道对不对。。

点评

一行一行底层还是再调用read()即一个字节一个字节读 只是把它封装起来罢了。  发表于 2015-9-14 23:43
回复 使用道具 举报
boboyuwu 发表于 2015-9-14 17:08
肯定是用fileinputstream调用啊      你理解是对的

BufferedReader会一次性读取很多数据到缓冲区,然后上层调用者从缓冲区中读取数据 避免了过多的操作IO造成的低效
但是BufferedReader底层还是再一次次操作IO 难道  源代码中BufferedReader一次读取缓冲区大少的数据块和一次读一个字符的时间是一样的吗?这是不是与FileReader的区别
回复 使用道具 举报
也想知道
回复 使用道具 举报
boboyuwu 发表于 2015-9-14 08:09
你想想 把一部数据先存到内存中的缓冲区就可以随时对它进行操作了啊,如果不缓冲到内存 bufferdreader里 ...

肯定是用fileinputstream调用啊      你理解是对的

点评

所以啊 底层还是通过FileReader调用 难道BufferedReader有更高效的理由。  发表于 2015-9-14 22:46
回复 使用道具 举报
菊花爆满山 来自手机 中级黑马 2015-9-14 11:35:42
9#
boboyuwu 发表于 2015-9-14 08:09
你想想 把一部数据先存到内存中的缓冲区就可以随时对它进行操作了啊,如果不缓冲到内存 bufferdreader里 ...

如果我通过FileReader自定义一个字符数组,当然也可以通过FileReader中的read方法来写一个readLine方法出来,不知道2个有什么不同
回复 使用道具 举报
菊花爆满山 发表于 2015-9-13 23:43
其实我不理解的就是BufferedReader一次一次从硬盘把数据读到内存 和 FileReader一次一次从硬盘把数据读到 ...

你想想 把一部数据先存到内存中的缓冲区就可以随时对它进行操作了啊,如果不缓冲到内存 bufferdreader里的readline()读取一行读取一行就没法用

点评

其实我想问的就是BufferedReader要先把数据存入缓冲区,就这个步骤,底层是不是通过IO操作来完成的,也就是一个一个字符的读取到缓冲区,它和FileReader有什么区别,不知道我的理解对不对   发表于 2015-9-14 11:47
回复 使用道具 举报
boboyuwu 发表于 2015-9-13 20:46
因为FileReader里的read()是一次次的在硬盘上读取,BufferedReader是先把数据一次次从硬盘里读取到内存里 ...

其实我不理解的就是BufferedReader一次一次从硬盘把数据读到内存 和 FileReader一次一次从硬盘把数据读到自定义的内存 这两个是一样的吧  前者还多了一步 从内存取数据
回复 使用道具 举报
因为FileReader里的read()是一次次的在硬盘上读取,BufferedReader是先把数据一次次从硬盘里读取到内存里,然后掉用BufferedReader里的read()就是从内存中一次次读取了,你觉得从硬盘读取和从内存读取哪个快?

点评

BufferedReader一次次在硬盘上读取到数据到内存和FileReader是一样的,前者再从内存读数据,这样怎么会是前者效率高呢  发表于 2015-9-13 23:36
回复 使用道具 举报
菊花爆满山 来自手机 中级黑马 2015-9-13 17:25:03
报纸
新手求科普!
回复 使用道具 举报
事实上,这章我也没怎么理解,得回去看一下!
回复 使用道具 举报
菊花爆满山 来自手机 中级黑马 2015-9-13 17:00:32
藤椅
lion_good 发表于 2015-9-13 15:31
BufferedReader 一次读取多个字节到内存中 ,

你的意思是BufferReader一次读缓冲区大小的数据,那这一次读取低层是不是还是Reader的read方法,那和我通过FileReader的read方法往自定义的缓冲区数组里存 哪里不同了
回复 使用道具 举报
BufferedReader 一次读取多个字节到内存中 ,
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马