黑马程序员技术交流社区

标题: 为什么要flush()和close()啊 [打印本页]

作者: 小菜鸟啊    时间: 2014-1-14 08:50
标题: 为什么要flush()和close()啊
各位大神可能觉得问题太简单
作者: xu6148152    时间: 2014-1-14 08:54
方法close()运行前都会先调用方法flush(),
如果没有调用方法flush(),写入的数据可能丢失!f
lush()也不能关闭流。
作者: 花生壳    时间: 2014-1-14 08:55
你不flush()数据怎么写出来,在缓存里面
关闭close()。节省系统资源。

作者: 776699    时间: 2014-1-14 08:58
在关闭流之前,flush()就是将缓冲区的数据,刷新到硬盘上,防止意外发生数据丢失;方法close()运行前都会先调用方法flush(),如果没有调用方法flush(),写入的数据可能丢失!
作者: 2013_ok    时间: 2014-1-14 09:08
{:soso_e113:}赞一个
作者: 嘿╰_╯往哪里跑    时间: 2014-1-14 09:39
3楼正解
作者: 高丽华    时间: 2014-1-14 09:57
你这个问题有两种情况:
1.import java.io.*;
class FileWriterDemo
{
        public static void main(String[] args)throws IOException
        {
                //新建对象,要有明确的对象
                FileWriter fw=new FileWriter("demo.txt");
                //调用write方法,将字符串写入到流中。
                fw.write("abc");//内容不会被打印
                //刷新流对象中的缓冲数据。
                //fw.flush();
                //关闭流资源。在关闭流资源的时候,也会刷新缓冲数据。
                fw.close();
        }
}
在这个例子中就说明了,fw.flush()是刷新数据的,但是close()也有这项功能同时还有关闭流资源的功能,所以在这里可以省略flush().
close()和flesh()的区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。

2.import java.io.*;
class  BufferedWriterDemo
{
        public static void main(String[] args)throws IOException//记得对异常的处理
        {
                //创建流对象
                FileWriter fw=new FileWriter("demo.txt");
                //把fw作为实际参数传递给缓冲取BufferdeWriter
                BufferedWriter bfw=new BufferedWriter(fw);
                //bfw.write("abcdefg");
                //记住刷新缓冲区
                //bfw.flush();
                //关闭bfw中的流就是关闭fw中的流
                //bfw.close();
                for (int x=1;x<5;x++)
                {
                        bfw.write("abc"+x);
                        bfw.newLine();
                        bfw.flush();
                }
                        bfw.close();
        }

}
从这个例子可以看出,只要是用到了缓冲区就一定要刷新流,所以在这个例子中fulsh就必须有,要不然就没有数据。

综合上面的两个例子,说明了,其实flush就是刷新流的,close就是关闭流资源的,所以close这个动作必须要有,但是flush就是分两种情况,如上。
作者: 小菜鸟啊    时间: 2014-1-19 20:12
感谢各位大神!




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