黑马程序员技术交流社区

标题: 请问这段代码的作用是什么。。。 [打印本页]

作者: 菠菜树    时间: 2015-2-28 17:39
标题: 请问这段代码的作用是什么。。。

在书上看到一段代码,前面的代码都能理解,但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. }
复制代码

作者: lang    时间: 2015-3-1 11:20
finally{}内代码的作用:程序运行最后一定执行关流动作,不关会占用资源
作者: 菠菜树    时间: 2015-3-2 20:28
lang 发表于 2015-3-1 11:20
finally{}内代码的作用:程序运行最后一定执行关流动作,不关会占用资源

哦,明白了,因为try{}可能会抛出exception,执行不到close(),所以最后一定要执行close()




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