黑马程序员技术交流社区

标题: BufferedWriter 要比 FileReader 和 FileWriter高效? [打印本页]

作者: 菊花爆满山    时间: 2015-9-13 11:23
标题: BufferedWriter 要比 FileReader 和 FileWriter高效?

JDK API中这么说的“从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。“用FileReader的read()先制定一个长度,不也是缓冲么?BufferedReader有什么更快的原理么?新手求科普
作者: lion_good    时间: 2015-9-13 15:31
BufferedReader 一次读取多个字节到内存中 ,
作者: 菊花爆满山    时间: 2015-9-13 17:00
lion_good 发表于 2015-9-13 15:31
BufferedReader 一次读取多个字节到内存中 ,

你的意思是BufferReader一次读缓冲区大小的数据,那这一次读取低层是不是还是Reader的read方法,那和我通过FileReader的read方法往自定义的缓冲区数组里存 哪里不同了
作者: heshiwei    时间: 2015-9-13 17:21
事实上,这章我也没怎么理解,得回去看一下!
作者: 菊花爆满山    时间: 2015-9-13 17:25
新手求科普!
作者: boboyuwu    时间: 2015-9-13 20:46
因为FileReader里的read()是一次次的在硬盘上读取,BufferedReader是先把数据一次次从硬盘里读取到内存里,然后掉用BufferedReader里的read()就是从内存中一次次读取了,你觉得从硬盘读取和从内存读取哪个快?
作者: 菊花爆满山    时间: 2015-9-13 23:43
boboyuwu 发表于 2015-9-13 20:46
因为FileReader里的read()是一次次的在硬盘上读取,BufferedReader是先把数据一次次从硬盘里读取到内存里 ...

其实我不理解的就是BufferedReader一次一次从硬盘把数据读到内存 和 FileReader一次一次从硬盘把数据读到自定义的内存 这两个是一样的吧  前者还多了一步 从内存取数据
作者: boboyuwu    时间: 2015-9-14 08:09
菊花爆满山 发表于 2015-9-13 23:43
其实我不理解的就是BufferedReader一次一次从硬盘把数据读到内存 和 FileReader一次一次从硬盘把数据读到 ...

你想想 把一部数据先存到内存中的缓冲区就可以随时对它进行操作了啊,如果不缓冲到内存 bufferdreader里的readline()读取一行读取一行就没法用
作者: 菊花爆满山    时间: 2015-9-14 11:35
boboyuwu 发表于 2015-9-14 08:09
你想想 把一部数据先存到内存中的缓冲区就可以随时对它进行操作了啊,如果不缓冲到内存 bufferdreader里 ...

如果我通过FileReader自定义一个字符数组,当然也可以通过FileReader中的read方法来写一个readLine方法出来,不知道2个有什么不同
作者: boboyuwu    时间: 2015-9-14 17:08
boboyuwu 发表于 2015-9-14 08:09
你想想 把一部数据先存到内存中的缓冲区就可以随时对它进行操作了啊,如果不缓冲到内存 bufferdreader里 ...

肯定是用fileinputstream调用啊      你理解是对的
作者: freehello    时间: 2015-9-14 17:56
也想知道

作者: 菊花爆满山    时间: 2015-9-14 22:50
boboyuwu 发表于 2015-9-14 17:08
肯定是用fileinputstream调用啊      你理解是对的

BufferedReader会一次性读取很多数据到缓冲区,然后上层调用者从缓冲区中读取数据 避免了过多的操作IO造成的低效
但是BufferedReader底层还是再一次次操作IO 难道  源代码中BufferedReader一次读取缓冲区大少的数据块和一次读一个字符的时间是一样的吗?这是不是与FileReader的区别
作者: 天之饺子    时间: 2015-9-14 23:01
BufferedReader不是能一行一行读入吗?  个人理解这样快一点吧。。  也不知道对不对。。




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