最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

try-with-resource優(yōu)雅關(guān)閉io流的方法

 更新時間:2021年01月04日 15:19:16   作者:Java勸退師、  
這篇文章主要給大家介紹了關(guān)于try-with-resource優(yōu)雅關(guān)閉io流的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

JAVA的一大特性就是JVM會對內(nèi)部資源實現(xiàn)自動回收,即自動GC,給開發(fā)者帶來了極大的便利。但是JVM對外部資源的引用卻無法自動回收,例如數(shù)據(jù)庫連接,網(wǎng)絡(luò)連接以及輸入輸出IO流等,這些連接就需要我們手動去關(guān)閉,不然會導(dǎo)致外部資源泄露,連接池溢出以及文件被異常占用等。

傳統(tǒng)的手動釋放外部資源一般放在一般放在try{}catch(){}finally{}機制的finally代碼塊中,因為finally代碼塊中語句是肯定會被執(zhí)行的,即保證了外部資源最后一定會被釋放。同時考慮到finally代碼塊中也有可能出現(xiàn)異常,finally代碼塊中也有一個try{}catch(){},這種寫法是經(jīng)典的傳統(tǒng)釋放外部資源方法,顯然是非常繁瑣的。

傳統(tǒng)寫法操作io流

例如如下讀取的文件的io流,我們之前可能會這樣寫

public class Main {
 public static void main(String[] args) {
  FileInputStream fileInputStream =null;
  try {
   fileInputStream = new FileInputStream(new File("/Users/laoniu/a.txt")); //打開流
   byte[] bytes = new byte[1024];
   int line = 0; 
   //讀取數(shù)據(jù)
   while ((line = fileInputStream.read(bytes))!= -1){
    System.out.println(new String(bytes,0,line));
   }
 
  } catch (IOException e) {
   e.printStackTrace();
  }finally {
   if (fileInputStream != null){ //不為空
    try {
     fileInputStream.close(); //關(guān)閉流
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
}

使用try-with-resource寫法優(yōu)雅操作io流

public class Main {
 public static void main(String[] args) {
  //把打開流的操作都放入try()塊里
  try( FileInputStream fileInputStream = new FileInputStream(new File("/Users/laoniu/a.txt"))) {
   byte[] bytes = new byte[1024];
   int line = 0;
   while ((line = fileInputStream.read(bytes))!= -1){
    System.out.println(new String(bytes,0,line));
   }
 
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

在try()中可以編寫多個文件io流或網(wǎng)絡(luò)io流。讓我們看看java編譯器是怎么幫我們實現(xiàn)的

借助idea查看編譯后的代碼

可以看到編譯后的代碼,java編譯器自動替我們加上了關(guān)閉流的操作。所以跟我們自己關(guān)閉流是一樣的。try-with-resource這樣優(yōu)雅的寫法還是不錯的,讓代碼看起來不那么臃腫。

注意jdk1.7以后才可以用

總結(jié)

到此這篇關(guān)于try-with-resource優(yōu)雅關(guān)閉io流的文章就介紹到這了,更多相關(guān)try-with-resource優(yōu)雅關(guān)閉io流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java結(jié)束進程的實例代碼

    java結(jié)束進程的實例代碼

    java結(jié)束程序進程的方法很簡單,只要一句代碼就行,大家參考使用吧
    2013-12-12
  • SpringBoot之logback-spring.xml不生效的解決方法

    SpringBoot之logback-spring.xml不生效的解決方法

    這篇文章主要介紹了SpringBoot之logback-spring.xml不生效的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java concurrency之AtomicReference原子類_動力節(jié)點Java學(xué)院整理

    Java concurrency之AtomicReference原子類_動力節(jié)點Java學(xué)院整理

    AtomicReference是作用是對"對象"進行原子操作。這篇文章主要介紹了Java concurrency之AtomicReference原子類,需要的朋友可以參考下
    2017-06-06
  • 百度Java面試題 前200頁精選(中)

    百度Java面試題 前200頁精選(中)

    這篇文章主要為大家分享了Java面試資源中篇,百度“Java面試題”前200頁都在這里了,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • springcloud項目快速開始起始模板的實現(xiàn)

    springcloud項目快速開始起始模板的實現(xiàn)

    本文主要介紹了springcloud項目快速開始起始模板思路的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 如何在mybatis中向BLOB字段批量插入數(shù)據(jù)

    如何在mybatis中向BLOB字段批量插入數(shù)據(jù)

    這篇文章主要介紹了如何在mybatis中向BLOB字段批量插入數(shù)據(jù)的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-10-10
  • 一文搞懂Java中的線程安全與線程同步

    一文搞懂Java中的線程安全與線程同步

    線程安全指在被多個線程訪問時,程序可以持續(xù)進行正確的處理。線程同步是指程序中用于控制不同線程間操作發(fā)生相對順序的機制。本文將通過示例詳細(xì)為大家講講二者的使用,需要的可以參考一下
    2022-06-06
  • 使用vscode搭建javaweb項目的詳細(xì)步驟

    使用vscode搭建javaweb項目的詳細(xì)步驟

    我個人是很喜歡VsCode的,開源免費、功能全面,所以為了方便,我把我?guī)缀跛械倪\行都集成到了VsCode上來,JavaWeb也不例外,下面這篇文章主要給大家介紹了關(guān)于使用vscode搭建javaweb項目的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • java隨機字符串生成示例

    java隨機字符串生成示例

    這篇文章主要介紹了java隨機字符串生成示例,這個字符隨機生成類可以生成多種組合的字符串,比如大+小字符+數(shù)字+符號,需要的朋友可以參考下
    2014-03-03
  • JAVA中的Launcher類解析

    JAVA中的Launcher類解析

    這篇文章主要介紹了JAVA中的Launcher類解析,Launcher作為JAVA應(yīng)用的入口,根據(jù)雙親委派模型,Laucher是由JVM創(chuàng)建的,它類加載器應(yīng)該是BootStrapClassLoader, 這是一個C++編寫的類加載器,是java應(yīng)用體系中最頂層的類加載器,需要的朋友可以參考下
    2023-09-09

最新評論

和林格尔县| 塔河县| 平阴县| 西宁市| 登封市| 万荣县| 乐业县| 鹤峰县| 榆树市| 阳西县| 元氏县| 无锡市| 曲松县| 德昌县| 尼玛县| 资源县| 应用必备| 教育| 灵寿县| 双江| 当雄县| 铜鼓县| 康平县| 凤山县| 自治县| 安康市| 河池市| 平顺县| 太仆寺旗| 积石山| 湘潭市| 汉源县| 英超| 托克托县| 沛县| 南川市| 集贤县| 仪征市| 明溪县| 扶沟县| 瓦房店市|