欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

通常在 java 中對文本、網(wǎng)絡(luò)資源等操作起來是很繁雜的,要聲明,讀取,關(guān)閉三個(gè)階段,還得考慮異常情況。假設(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)閉代碼中,還要再來一個(gè) try/catch,看著是不是很難受,很不優(yōu)雅,很想干掉這個(gè) finally!

自從 java7 以來這個(gè)問題已經(jīng)有比較好的解決辦法了,那就是try-with-resource,可能是 jdk 開發(fā)人員也覺得之前的關(guān)閉資源寫法太反人類,所以做了這樣的一個(gè)語法糖。注意這并不是什么新特性,只是一個(gè)語法糖,簡化代碼的。如果你反編譯代碼后會發(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,凡是實(shí)現(xiàn)了 AutoCloseable 接口的,且在 try 后面的括號中創(chuàng)建的,都會在 try/catch 執(zhí)行完畢后確保調(diào)用 close 方法。這么寫是不是優(yōu)雅多了??

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

相關(guān)文章

  • Spring Boot Maven 打包可執(zhí)行Jar文件的實(shí)現(xiàn)方法

    Spring Boot Maven 打包可執(zhí)行Jar文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了Spring Boot Maven 打包可執(zhí)行Jar文件的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-02-02
  • Java 類動態(tài)添加屬性字段的操作

    Java 類動態(tài)添加屬性字段的操作

    這篇文章主要介紹了Java 類動態(tài)添加屬性字段的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn)

    IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn)

    本文主要介紹了IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java實(shí)現(xiàn)的對稱加密算法AES定義與用法詳解

    Java實(shí)現(xiàn)的對稱加密算法AES定義與用法詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)的對稱加密算法AES,結(jié)合實(shí)例形式分析了對稱加密算法AES的定義、特點(diǎn)、用法及使用場景,需要的朋友可以參考下
    2018-04-04
  • Git工具 conflict沖突問題解決方案

    Git工具 conflict沖突問題解決方案

    這篇文章主要介紹了Git工具 conflict沖突問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • spring?boot?3使用?elasticsearch?提供搜索建議的實(shí)例詳解

    spring?boot?3使用?elasticsearch?提供搜索建議的實(shí)例詳解

    這篇文章主要介紹了spring?boot3使用elasticsearch提供搜索建議,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Java消息隊(duì)列RabbitMQ入門詳解

    Java消息隊(duì)列RabbitMQ入門詳解

    這篇文章主要介紹了Java消息隊(duì)列RabbitMQ入門詳解,RabbitMQ是使用Erlang語言開發(fā)的開源消息隊(duì)列系統(tǒng),基于AMQP協(xié)議 來實(shí)現(xiàn),AMQP的主要特征是面向消息、隊(duì)列、路由(包括點(diǎn)對點(diǎn)和發(fā)布 /訂閱)、可靠性、安全,需要的朋友可以參考下
    2023-07-07
  • java中TreeMap集合的常用方法詳解

    java中TreeMap集合的常用方法詳解

    本篇文章給大家?guī)淼膬?nèi)容是關(guān)于java中TreeMap集合的常用方法詳解,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。下面我們就來學(xué)習(xí)一下吧
    2021-11-11
  • 解決Java?API不能遠(yuǎn)程訪問HBase的問題

    解決Java?API不能遠(yuǎn)程訪問HBase的問題

    這篇文章主要介紹了解決Java?API不能遠(yuǎn)程訪問HBase的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java系統(tǒng)中拆分同步和異步詳解

    Java系統(tǒng)中拆分同步和異步詳解

    這篇文章主要給大家介紹了關(guān)于Java系統(tǒng)中拆分同步和異步的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評論