黑马程序员技术交流社区

标题: 字符流的缓冲问题 [打印本页]

作者: 胡威    时间: 2012-2-15 17:24
标题: 字符流的缓冲问题
FileWriter的write()是把内容先写到流里面,然后flush(),BufferedWriter的write()是先把内容写到缓冲区内,然后再flush()
请问:存到缓冲区再刷进目标文件比存在流再刷进目标文件效率高在哪里?
作者: 钟保罗    时间: 2012-2-15 18:02
存在流刷的话,写一个刷一个,这样程序执行起来繁琐的多了啊,你写一个有要去刷一下,如果全部都写到缓冲区里面,全部在一起刷,这样不就快很多!比如你要搬很多东西,你是一件一件搬快,还是用一把推车全部放到推车里面去,一起推过去高效的多吧! 省了来回的多趟的跑。。。。。
作者: 胡威    时间: 2012-2-15 18:33
那就都写到流里一起刷呗 为什么要写一个刷一个?再问:FileReader的read()在读取时为什么就不是先放到流里去,然后在通过刷的方式返回读到的内容呢?
作者: 黄锦成    时间: 2012-2-15 19:06
你直接写进流里去,流的空间是比较小的。缓冲区有个构造方法:BufferedWriter(Writer out, int sz)  创建一个使用给定大小输出缓冲区的新缓冲字符输出流。你可以自定义缓冲区,一次性存放多一点,再刷到文件中。可以减少与文件的交互次数,提高效率
作者: 毛溯澜    时间: 2012-2-15 19:53
以文件存储为例,硬盘存取的速度远远低于内存中的数据存取速度。为了减少对硬盘的存取,通常从文件中一次读取一定长度的数据,而写入时也是一次写入一定长度的数据,这可以增加文件存取的效率。




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