BufferReater.flush()

ABF_Sunyan 2008-01-10 12:47:12
import java.io.*;
public class TestBufferedStream {
public static void main(String[] args) {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("f:/language/java/java/shiyan02.txt"));
BufferedReader br = new BufferedReader(new FileReader("f:/language/java/java/shiyan02.txt"));
String s = null;
for(int i=0; i<=100; i++) {
s = String.valueOf(Math.random());
bw.write(s);
bw.newLine();
}
bw.flush();
while((s=br.readLine())!=null) {
System.out.println(s);
}
bw.close();
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
这个程序的运行结构是在指定的目录建立一个装着100行随机数的txt文件,之后在读出来,在程序中我做了个试验,如果我把bw.flush();这句去掉,那么,100个随机数依然可以写到那个txt文档中去,但去读不出来东西了,我想知道为什么?

...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ABF_Sunyan 2008-01-12
  • 打赏
  • 举报
回复
谢谢大家的回复!你们说的我明白了!
KK3K2005 2008-01-11
  • 打赏
  • 举报
回复
同时开了写和读而且是缓冲流
这样读流肯定不是更新后的内容(除非写的时候会有事件通知他一起刷新)

写完了 close了
在慢慢读好了
beiouwolf 2008-01-10
  • 打赏
  • 举报
回复
记者一个基本规则
一次做一件事
cursor_wang 2008-01-10
  • 打赏
  • 举报
回复
我的理解是:它写入时不是一个一个字符写的,而是作为流从缓存里写入的,你不刷新的话,它不知道你到底写完没有,所以也不读了.反之它知道你已经写完了,缓存里的数据全部刷到文件里了.就可以读了.
还有个办法你可以读到数据,你把bw.close(); 这句提前到bw.flush();这里,把它替换掉也可以.你不刷新,但你关闭了,也就可以读了.
ABF_Sunyan 2008-01-10
  • 打赏
  • 举报
回复
您的意思是不是说在写流没关闭之前如果我不用flush()这个方法,那么程序就视为缓冲区没干净,所以不让读 ?
KK3K2005 2008-01-10
  • 打赏
  • 举报
回复
写的流和读的流分开来new
先开写流 关了以后 再开读流

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧