日期:2014-05-20  浏览次数:20764 次

请教:关闭流的问题.
下面这个程序(创建顺序文本文件)中:
      import   java.io.*;
class   BufferedWriterDemo{
    public   static   void   main(String   args[]){
        try{
              FileWriter   fw=new   FileWriter(args[0]);
              BufferedWriter   bw=new   BufferedWriter(fw);
              for(int   i=0;i <10;i++)
                {bw.write( "Line "+i+ "\n\r ");}
                      bw.close();
              }catch(Exception   e){
                  System.out.println( "Exception: "+e);
                }  
        }
    }
    关闭bw.close是什么意思?为什么不是fw.close;为什么一fw.close创建的文件里的内容就没了?
而这一个程序(读顺序文本文件):
      import   java.io.*;
class   BufferedReaderDemo{
        public   static   void   main(String   args[]){
            try{
                  FileReader   fr=new   FileReader(args[0]);
                  BufferedReader   br=new   BufferedReader(fr);
                  String   s;
                  while((s=br.readLine())!=null)
                          System.out.println(s);
                            br.close();
                    }   catch(Exception   e){
                        System.out.println( "Exception: "+e);
                        }
        }
    }
    关闭的为什么是fr.close()?
请帮忙解惑,谢谢!!!!!!!!!!!!!!

------解决方案--------------------
第一个程序,
如果直接关闭fw.close(),应该在之前bw.flush();
因为bw的缓冲区有内容,在fw.close()时,没有写入文件,所有你说文件内容没有了.
可以先bw.flush();再fw.close();

第二程序,
先关哪一个都一样吧!
因为你已经把内容读完了.