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

如何更優(yōu)雅的關(guān)閉java文本、網(wǎng)絡(luò)等資源

 更新時間:2019年06月14日 10:30:05   作者:fleyX  
這篇文章主要介紹了如何更優(yōu)雅的關(guān)閉java文本、網(wǎng)絡(luò)等資源,在 finally 的關(guān)閉代碼中,還要再來一個 try/catch,看著是不是很難受,很不優(yōu)雅,很想干掉這個 finally!,需要的朋友可以參考下

通常在 java 中對文本、網(wǎng)絡(luò)資源等操作起來是很繁雜的,要聲明,讀取,關(guān)閉三個階段,還得考慮異常情況。假設(shè)我們要讀取一段文本顯示到控制臺,通常會有如下的代碼:

public static void main(String[] args) {
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream("./pom.xml");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader reader = new BufferedReader(inputStreamReader);
String str;
while ((str = reader.readLine()) != null) {
System.out.println(str);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (Exception e) {
}
}
}
}

在 finally 的關(guān)閉代碼中,還要再來一個 try/catch,看著是不是很難受,很不優(yōu)雅,很想干掉這個 finally!

自從 java7 以來這個問題已經(jīng)有比較好的解決辦法了,那就是try-with-resource,可能是 jdk 開發(fā)人員也覺得之前的關(guān)閉資源寫法太反人類,所以做了這樣的一個語法糖。注意這并不是什么新特性,只是一個語法糖,簡化代碼的。如果你反編譯代碼后會發(fā)現(xiàn)還是 try/catch/finally 的傳統(tǒng)寫法。

try-with-resource 用法如下:

try (FileInputStream inputStream = new FileInputStream("./pom.xml")) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
String str;
while ((str = reader.readLine()) != null) {
System.out.println(str);
}
} catch (Exception e) {
e.printStackTrace();
}

無需在 finally 中手動關(guān)閉 inputStream,凡是實現(xiàn)了 AutoCloseable 接口的,且在 try 后面的括號中創(chuàng)建的,都會在 try/catch 執(zhí)行完畢后確保調(diào)用 close 方法。這么寫是不是優(yōu)雅多了??

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java、C++中子類對父類函數(shù)覆蓋的可訪問性縮小的區(qū)別介紹

    Java、C++中子類對父類函數(shù)覆蓋的可訪問性縮小的區(qū)別介紹

    這篇文章主要給大家介紹了關(guān)于Java、C++中子類對父類函數(shù)覆蓋的可訪問性縮小的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 配置Servlet兩種方法以及特點詳解

    配置Servlet兩種方法以及特點詳解

    這篇文章主要介紹了配置Servlet兩種方法以及特點詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot2 實現(xiàn)JPA分頁和排序分頁的案例

    SpringBoot2 實現(xiàn)JPA分頁和排序分頁的案例

    這篇文章主要介紹了SpringBoot2 實現(xiàn)JPA分頁和排序分頁的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • JVM完全解讀之GC日志記錄分析

    JVM完全解讀之GC日志記錄分析

    這篇文章主要介紹了JVM完全解讀之GC日志記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-01-01
  • Java Stream的基本概念以及創(chuàng)建方法

    Java Stream的基本概念以及創(chuàng)建方法

    這篇文章主要介紹了Java Stream的基本概念以及創(chuàng)建方法,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-08-08
  • java?環(huán)境配置(2023年詳細教程)

    java?環(huán)境配置(2023年詳細教程)

    這篇文章首先為了完善我的知識體系,今后一些軟件的安裝教程也可能會用到想寫一個更加詳細的,因為這并不僅僅是寫給?IT?行業(yè)的,其它行業(yè)可能也需要配置java環(huán)境
    2023-06-06
  • 教你怎么用Java實現(xiàn)給圖片打上水印

    教你怎么用Java實現(xiàn)給圖片打上水印

    這篇文章主要介紹了教你怎么用Java實現(xiàn)給圖片打上水印,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Springboot實現(xiàn)阿里云通信短信服務(wù)有關(guān)短信驗證碼的發(fā)送功能

    Springboot實現(xiàn)阿里云通信短信服務(wù)有關(guān)短信驗證碼的發(fā)送功能

    短信驗證碼是通過發(fā)送驗證碼到手機的一種有效的驗證碼系統(tǒng)。主要用于驗證用戶手機的合法性及敏感操作的身份驗證。下面通過本文大家分享Springboot實現(xiàn)阿里云通信短信服務(wù)有關(guān)短信驗證碼的發(fā)送功能,一起看看吧
    2017-08-08
  • Java 實現(xiàn)對稱加密算法

    Java 實現(xiàn)對稱加密算法

    這篇文章主要介紹了Java 實現(xiàn)對稱加密算法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-11-11
  • Java9新特性Module模塊化編程示例演繹

    Java9新特性Module模塊化編程示例演繹

    這篇文章主要為大家介紹了Java9新特性Module模塊化編程的示例演繹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03

最新評論

岳阳县| 武山县| 瓮安县| 乌海市| 如东县| 惠安县| 肇州县| 定襄县| 轮台县| 大渡口区| 天峻县| 彝良县| 吴川市| 石楼县| 精河县| 凤冈县| 休宁县| 改则县| 孟州市| 博乐市| 永春县| 嘉鱼县| 嘉定区| 南阳市| 五家渠市| 枝江市| 汶川县| 庄浪县| 迁西县| 汪清县| 昔阳县| 泗阳县| 齐齐哈尔市| 新巴尔虎右旗| 富平县| 永寿县| 白玉县| 信宜市| 阜南县| 北安市| 聂荣县|