黑马程序员技术交流社区

标题: 关于IO流的问题 纠结了很久都没纠结明白啊! [打印本页]

作者: 苏格拉底的弟子    时间: 2012-1-3 16:36
标题: 关于IO流的问题 纠结了很久都没纠结明白啊!
本帖最后由 苏格拉底的弟子 于 2012-1-5 14:11 编辑

IO流中 FileReader 和 FileWriter 都有其相应的装饰对象 BufferedReader 和BufferedWriter    其原理都是内部定义了数组来对其进行缓冲...  FileReader里面没有数组  也就没有缓冲 要一个一个读 所以要 BufferedReader 来装饰  但是FileWrite里面不是有写入字符串的方法吗,先把字符串写进缓冲里(参考毕向东io流视频)也就是说里面有缓冲了  那为什么还要BufferedWriter 来增强呢?  求解
作者: 罗全涛    时间: 2012-1-3 18:58
一个讲的是字符串,一个讲的是缓冲区。读取字符串仅仅只是BufferedReader的readLine方法,它返回的
是字符串形式,而写入字符串在Writer抽象类中就已经定义了。不是FileWriter特有的。在writer中没有
缓冲区,在FileWriter中有怎么会有,它仅仅是继承了writer,并没有覆盖或定义任何方法?
首先你要明白为什么要引入缓冲区:1:如果没有缓冲区,那么write就会每次都调用底层资源,而如果
有缓冲区,write只是将其写入缓冲区,没有调用底层资源,通过flush刷新后,才会调用底层资源,能
很大程度上节约系统资源。2:如果读取数据和写入数据的速率不同,加入缓冲区能很大程度上平衡
读入读出速率。
作者: 苏格拉底的弟子    时间: 2012-1-4 23:46
原来是每次都调用了底层资源啊...    定义数组后  就可以减少调用底层资源的次数了...
作者: 罗全涛    时间: 2012-1-5 01:02
苏格拉底的弟子 发表于 2012-1-4 23:46
原来是每次都调用了底层资源啊...    定义数组后  就可以减少调用底层资源的次数了... ...

问题弄懂后,请结贴吧,别总是求助了额。




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