黑马程序员技术交流社区

标题: 缓冲区的小疑惑 [打印本页]

作者: 胥文    时间: 2013-1-25 23:16
标题: 缓冲区的小疑惑
本帖最后由 张向辉 于 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()

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

作者: 黄锦成    时间: 2013-1-26 07:55
while("line=bufr.readLine()"!=null),你这句代码写错了,while("line=bufr.readLine()"!=null)把里面的引号去掉;还有你在while里面没有写到输出流中




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