使用try语句自动关闭流

    xiaoxiao2022-07-03  112

    今天面试被问到,关闭流,不用close,还有什么方法,哈哈,不知道~~

    虽然在java程序在结束时自动关闭所有打开的流,但是当使用完流后,显示的关闭所有打开的流仍然是一个好习惯。一个被打开的流有可能会用尽系统的资源,这取决于平台和实现。如果没有将流关闭,另一个程序试图打开另一个流时,可能会得到不需要的资源。

       从JDK1.7后,有两种关闭数据流的方法,分别如下:

      1)    使用close()显式地关闭流,部分代码如下:         FileInputStream in=null;//创建文件输入流         try {             in=new FileInputStream("word.txt");//读取文件             try {                 in.read();//读取单个字节                 System.out.println(in.read());             } catch (IOException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();             }//         } catch (FileNotFoundException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }         finally {             if(in!=null) {//如果文件输入流不是null                 try {                     in.close();//关闭文件输入流                 } catch (IOException e) {                     // TODO Auto-generated catch block                     e.printStackTrace();                 }

     

    2)使用try语句自动关闭流,部分代码如下所示:     try(FileInputStream in=new FileInputStream("word.txt");){//读取文件         in.read();//读取一个字节     }catch {(IOException e1){         e1.printStackTrace();     }//try..catch语句结束后自动关闭in                      很明显第二种要优于第一种,但是第二种方法无法用于1.7版本以下的java环境。两种方法关闭的效果是相同的,自行灵活选用其一即可。

    最新回复(0)