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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 菠菜树 中级黑马   /  2015-2-28 17:39  /  977 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


在书上看到一段代码,前面的代码都能理解,但finally{}内代码的作用不是太清楚,哪位同学能解答一下?
且将该段代码注释掉后运行没遇到什么影响。。。


  1. import java.io.*;

  2. public class SequenceStream{
  3.         public static void main(String[] args)throws Exception{
  4.                 FileInputStream in1=null,in2=null;
  5.                 SequenceInputStream sequence=null;
  6.                 FileOutputStream out=null;
  7.                 try{
  8.                         File file1=new File("e:\\Java\\demofolder\\file1.txt");
  9.                         File file2=new File("e:\\Java\\demofolder\\file2.txt");
  10.                         File file3=new File("e:\\Java\\demofolder\\file3.txt");
  11.                         in1=new FileInputStream(file1);
  12.                         in2=new FileInputStream(file2);
  13.                         sequence=new SequenceInputStream(in1,in2);
  14.                         out=new FileOutputStream(file3);
  15.                         int c;
  16.                         while((c=sequence.read())!=-1){
  17.                                 out.write(c);
  18.                         }
  19.                         in1.close();
  20.                         in2.close();
  21.                         out.close();
  22.                         sequence.close();
  23.                         System.out.println("OK。。。。。。");
  24.                 }catch(IOException e){
  25.                         e.printStackTrace();
  26.                 }
  27.                 finally{
  28.                         if(in1!=null)
  29.                                 try{
  30.                                         in1.close();
  31.                                 }catch(IOException e){}
  32.                         if(in2!=null)
  33.                                 try{
  34.                                         in2.close();
  35.                                 }catch(IOException e){}
  36.                         if(out!=null)
  37.                                 try{
  38.                                         out.close();
  39.                                 }catch(IOException e){}
  40.                         if(sequence!=null)
  41.                                 try{
  42.                                         sequence.close();
  43.                                 }catch(IOException e){}
  44.                 }
  45.         }
  46. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 加油~

查看全部评分

2 个回复

倒序浏览
finally{}内代码的作用:程序运行最后一定执行关流动作,不关会占用资源

评分

参与人数 1黑马币 +2 收起 理由
万合天宜 + 2 很给力!

查看全部评分

回复 使用道具 举报
lang 发表于 2015-3-1 11:20
finally{}内代码的作用:程序运行最后一定执行关流动作,不关会占用资源

哦,明白了,因为try{}可能会抛出exception,执行不到close(),所以最后一定要执行close()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马