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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gzbbxu 中级黑马   /  2013-6-10 15:51  /  5023 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于缓冲区的问题 BufferedReader 的flush方法,不太理解,这个方法我该怎么理解好呢?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 鼓励

查看全部评分

6 个回复

倒序浏览
楼主要问什么呢?缓冲区就是相当于把数据暂时存放到内存当中,flush相当于把内存读到的数据写到指定的目的处。
回复 使用道具 举报
楼主错了吧?BufferedReader 是没有flush方法的 ,只有BufferedWriter有flush方法,因为BufferedWriter,缓冲区原理,是将数据写到底层创建的一个数组中,它的write()方法将数据写到缓冲区的数组中,flush()是用来把缓冲区中的东西都到你指定的目的中的

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 淡定

查看全部评分

回复 使用道具 举报
w270307032 发表于 2013-6-10 16:39
楼主错了吧?BufferedReader 是没有flush方法的 ,只有BufferedWriter有flush方法,因为BufferedWriter,缓 ...

哦,是的,刚看了一下,flush方法的作用是强制写入,自然只有Writer才有。谢谢
回复 使用道具 举报
曹德君 发表于 2013-6-10 16:11
楼主要问什么呢?缓冲区就是相当于把数据暂时存放到内存当中,flush相当于把内存读到的数据写到指定的目的 ...

我想问的是,有什么好的理解方法。
回复 使用道具 举报
很简单的一个办法就是,如果写入的是字符流,你写入的时候实际上是写入了缓冲区,不能被直接识别。只有刷新了才能转换写进内层,而字节流能直接被识别。所以字节流不用刷新。
回复 使用道具 举报
首先,声明BufferedReader里没有flush也不需要用到flush方法,你问的应该是BufferedWriter里的flush方法。
因为BufferedWriter有缓冲区,write方法写的东西都放到了缓冲区中,flush就是用来将缓冲区的东西写入到目的地。
举例来说,比如现在有5个要处理的数据,要求写到文件中。如果不用缓冲技术,那数据会等待其中一个写完再写下一个。
而利用BufferedWriter则不一样,BufferedWriter的作用就是增加了缓冲区,提高效率。因为CPU的运算速度远快于IO的写操作,
这样写文件的操作就会被缓冲,而执行下一个数据的处理,直到第5个数据被处理。这时,内存中会出现排着队等待的5个数据。
这时调用flush就会强制将这些数据写到文件中去。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马