黑马程序员技术交流社区

标题: IO流复制文件 [打印本页]

作者: 清秋    时间: 2011-11-26 12:50
标题: IO流复制文件
本帖最后由 清秋 于 2011-11-26 15:53 编辑

复制的第二种方法
当执行write()方法后,关闭流,为什么还需要执行close()方法?
fr==null
  1.         public static void copy_2()
  2.         {
  3.                 FileWriter fw = null;               
  4.                 FileReader fr = null;

  5.                 try
  6.                 {
  7.                         fw = new FileWriter("CopyText.txt");
  8.                         fr =  new FileReader("CopyText.java");
  9.                         char[] buf = new char[1024];
  10.                         int len = 0;
  11.                         while ( (len=fr.read(buf)) != -1 )
  12.                         {
  13.                                 fw.write(buf,0,len);
  14.                         }
  15.                 }
  16.                 catch (IOException e)
  17.                 {
  18.                         throw new RuntimeException("读写异常");
  19.                 }
  20.                 finally
  21.                 {
  22.                         if (fw!=null)        //此处是否为空
  23.                         {
  24.                                 try
  25.                                 {
  26.                                         fw.close();       
  27.                                 }
  28.                                 catch (IOException e)
  29.                                 {
  30.                                 }
  31.                         }
  32.                         if (fr!=null)
  33.                         {
  34.                                 try
  35.                                 {
  36.                                         fr.close();
  37.                                 }
  38.                                 catch (IOException e)
  39.                                 {
  40.                                 }
  41.                         }
  42.                 }
  43.         }
复制代码

作者: 楓林虹影    时间: 2011-11-26 12:57
close();就是为了关闭流啊   流操作完毕后必须关闭
作者: 侯伟浩    时间: 2011-11-26 13:13
我想你是理解错了,你是不是以为用流读完数据后流是自动关闭的吗?
你要自己关闭!关闭流释放资源。
作者: 清秋    时间: 2011-11-26 13:47
hou3172568 发表于 2011-11-26 13:13
我想你是理解错了,你是不是以为用流读完数据后流是自动关闭的吗?
你要自己关闭!关闭流释放资源。 ...

是的说,关闭之前会刷新缓冲。。。确实理解错了

那个。关闭流资源,关闭流资源的话,关闭 Writer 和 关闭 Reader 有先后顺序么

我看视频里都是先Reader后Writer。然后。我自己觉得应该先关闭Writer的
作者: 飞逸    时间: 2011-11-26 13:51
close();  是流操作完后必须要把流关闭,同时释放流缓存的资源,关闭流。
作者: 王丰盛568    时间: 2011-11-26 14:46
执行close()方法  就是执行完毕,就要关闭流,目的就是为了释放资源。否则如果每次执行完毕,都不关闭的话,程序会占用计算机的资源,时间久了,会影响计算机的的运行速度。
作者: 常文艺    时间: 2011-11-26 15:21
输入流和输出流是分离的,就好像两只鸡,你杀死一个,另一个死不了。




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