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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© papercup 中级黑马   /  2014-3-29 23:58  /  899 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 papercup 于 2014-3-30 10:00 编辑

今天看了关于IO流的视频,流在使用后一定要关闭。但是close();方法描述说的是:关闭此流,但要先刷新它。那么它具体是怎么做的呢?
自己测试了一下:
  1. import java.io.*;
  2. class WriterDemo1{
  3.         public static void main(String[] args) throws IOException{
  4.                 FileWriter fw = new FileWriter("E:\\demo.txt");
  5.                 fw.write("abscsdtdsafdas");
  6.                 //fw.flush();                      //刷新该流的缓冲
  7.                 fw.close();
  8.         //        fw.write("xxxxxxx");
  9.         //        fw.flush();
  10.         }
  11. }
复制代码
将fw.flush();注释之后,得到的结果一样,那么fw.close();是不是一样会刷新这个流,之后才将它关闭掉呢?

3 个回复

倒序浏览
嗯 。。 是的   刷新完再关闭的

flush( )方法是刷新一下字符流, 但是此时 字符流不关闭 还可以用的

但是 close()方法  是先刷新一下字符流  然后再关闭流   以后流就不能再用啦
回复 使用道具 举报
1、如果你将fw.flush();注释,那么demo。txt中的文本信息为"abscsdtdsafdas"


2、如果你不将将fw.flush();注释,那么demo。txt中的文本信息为"abscsdtdsafdas"
但是会出现运行时会出现异常。
如Exception in thread "main" java.io.IOException: Stream closed所示。

代码改进如下;你可以得到你要的效果了
import java.io.*;
class WriterDemo1{
        public static void main(String[] args) throws IOException{
                FileWriter fw = new FileWriter("E:\\demo.txt");
                fw.write("abscsdtdsafdas");
                //fw.flush();                      //刷新该流的缓冲
               
            //    fw.write("xxxxxxx");
        //        fw.flush();
                          fw.close();
        }
}
回复 使用道具 举报
close()和flush()的区别就是前者关闭流之前会刷新一次流的缓冲区然后关闭此流,后者单纯的刷新流而已,close()关闭此流后此流就不能再用了,flush()刷新流后,此流还可以继续使用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马