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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胥文 中级黑马   /  2013-1-25 23:16  /  1260 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-27 10:44 编辑

为了提高流对象的操作效率而有了缓冲区,为什么在写入流中加缓冲时要加flush(),而在读取流中就没有flush()了
代码:
BufferedReader bufr = new BufferedReader(new FileReader("Demo.txt"));
String  line = null;
while("line=bufr.readLine()"!=null)//此处读到的数据没有存到缓冲区吗,为什么下面不需要刷新
{
        System.out.println(line)
}
bufr.close();
****************************
BufferedWriter bufw = new BufferedWriter(new FileWriter("Demo.txt"))
bufw.write("asdfg");//此处写到缓冲区了,所以下面有刷新
bufw.flush();
bufw.close()

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

2 个回复

倒序浏览
flush方法是接口Flushable中的flush方法,而在Flushable接口中只有BufferedWriter等的写入方法才可以使它的子类,
因为Flushable 是可刷新数据的目标地。调用 flush 方法将所有已缓冲输出写入底层流。flush void flush() throws IOException通过将所有已缓冲输出写入底层流来刷新此流。
而读的操作时从字符串中读取,不需要什么刷新了吧
嘿嘿 可以帮到你  加油

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
while("line=bufr.readLine()"!=null),你这句代码写错了,while("line=bufr.readLine()"!=null)把里面的引号去掉;还有你在while里面没有写到输出流中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马