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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小菜鸟啊 中级黑马   /  2014-1-14 08:50  /  4155 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

各位大神可能觉得问题太简单

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 +鼓励

查看全部评分

7 个回复

正序浏览
感谢各位大神!
回复 使用道具 举报
你这个问题有两种情况:
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就是分两种情况,如上。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 很给力!

查看全部评分

回复 使用道具 举报
3楼正解
回复 使用道具 举报
{:soso_e113:}赞一个
回复 使用道具 举报
在关闭流之前,flush()就是将缓冲区的数据,刷新到硬盘上,防止意外发生数据丢失;方法close()运行前都会先调用方法flush(),如果没有调用方法flush(),写入的数据可能丢失!

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你不flush()数据怎么写出来,在缓存里面
关闭close()。节省系统资源。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
方法close()运行前都会先调用方法flush(),
如果没有调用方法flush(),写入的数据可能丢失!f
lush()也不能关闭流。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马