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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清秋 黑马帝   /  2011-11-26 12:50  /  2315 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 清秋 于 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.         }
复制代码

6 个回复

倒序浏览
close();就是为了关闭流啊   流操作完毕后必须关闭
回复 使用道具 举报
我想你是理解错了,你是不是以为用流读完数据后流是自动关闭的吗?
你要自己关闭!关闭流释放资源。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
清秋 黑马帝 2011-11-26 13:47:22
板凳
hou3172568 发表于 2011-11-26 13:13
我想你是理解错了,你是不是以为用流读完数据后流是自动关闭的吗?
你要自己关闭!关闭流释放资源。 ...

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

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

我看视频里都是先Reader后Writer。然后。我自己觉得应该先关闭Writer的

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
飞逸 黑马帝 2011-11-26 13:51:13
报纸
close();  是流操作完后必须要把流关闭,同时释放流缓存的资源,关闭流。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
执行close()方法  就是执行完毕,就要关闭流,目的就是为了释放资源。否则如果每次执行完毕,都不关闭的话,程序会占用计算机的资源,时间久了,会影响计算机的的运行速度。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
常文艺 黑马帝 2011-11-26 15:21:24
7#
输入流和输出流是分离的,就好像两只鸡,你杀死一个,另一个死不了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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