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

java面試try-with-resources問題解答

 更新時間:2022年07月18日 17:02:36   作者:悟空不買菜了  
這篇文章主要介紹了java面試try-with-resources問題解答,?這個語句的作用是,確保該語句執(zhí)行之后,關閉每一個資源,也就是說它確保了每個資源都在生命周期結束之后被關閉

 前言:

這個語句的作用是,確保該語句執(zhí)行之后,關閉每一個資源,也就是說它確保了每個資源都在生命周期結束之后被關閉,因此,比如讀寫文件,我們就不需要顯示的調(diào)用close()方法

這個語句的大致模板如下:

我們可以看到我們把需要關閉的資源都放到try()這個括號里面去了,之前都是對異常的捕獲,怎么還可以寫資源語句,這就是奇妙之處,注意分號啊,最后一個資源可以不用加分號,中間的都要加分號,并且,對于java7來說,變量的聲明必須放在括號里面。 

下面來說一下具體實現(xiàn)原理:

首先在try()里面的類,必須實現(xiàn)了如下這個接口

這個接口也叫自動關閉資源接口.我們想要寫這樣的語句,必須去實現(xiàn)它里面的close()方法

對于這個類,很多類都已經(jīng)做了默認實現(xiàn),所以我們沒有必要顯示去山實現(xiàn)這樣一個東西,直接拿來用就可以了,比如:

 我們這些常見的文件操作類,都已經(jīng)做了實現(xiàn)。

這樣的做法有助于我們寫非常復雜的finally塊,話不多說,直接上代碼:

ImageCopy.java

import java.io.*;
public class ImageCopy {
    public static void main(String[] args) {
        File srcFile = new File("F:\\java課程資料\\王也.png");
        File destFile = new File("E:\\717.png");
        copyImage(srcFile,destFile);
    }
    //這個采用一邊讀,一邊寫的思路來做
    public static void copyImage(File srcFile, File destFile)  {
        //這個太繁瑣了,我們把它進行改進
       /* FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream(srcFile);
            fos = new FileOutputStream(destFile);
            byte[] buff = new byte[1024];
            int len = 0;
            while((len = fis.read(buff)) != -1) {
                fos.write(buff,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }*/
       //這里會自動幫我們關閉打開的這些資源
       try( FileInputStream fis = new FileInputStream(srcFile);
            FileOutputStream fos = new FileOutputStream(destFile);
            BufferedInputStream bis = new BufferedInputStream(fis);
            BufferedOutputStream bos = new BufferedOutputStream(fos)
       ) {
           byte[] buff = new byte[1024];
           int len = 0;
           while((len = bis.read(buff)) != -1) {
               bos.write(buff,0,len);
           }
       }catch (Exception e) {
            e.printStackTrace();
        }
    }
    //采用字符流來讀取文本操作
    public static void copyText(File srcFile,File destFile) {
        InputStreamReader fr = null;
        OutputStreamWriter fw = null;
        try {
            fr = new InputStreamReader(new FileInputStream(srcFile),"gbk");
          //  fw = new FileWriter(destFile);
            fw = new OutputStreamWriter(new FileOutputStream(destFile),"gbk");
            char[] buff = new char[1024];
            int len = 0;
            while((len = fr.read(buff)) != -1) {
                System.out.println("讀取到的長度:" + len);
                fw.write(buff,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

到此這篇關于java面試try-with-resources問題解答的文章就介紹到這了,更多相關java try-with-resources 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 一文搞懂?MyBatis的事務管理機制

    一文搞懂?MyBatis的事務管理機制

    MyBatis是一款優(yōu)秀的持久層框架,相信很多Java后端開發(fā)人員對它都不會陌生。本文將從事務概述、MyBatis實現(xiàn)事務的方式、事務實現(xiàn)源碼分析方面詳細解析MyBatis的事務管理機制,需要的朋友可以參考下
    2023-05-05
  • SpringBoot使用Maven打包異常-引入外部jar的問題及解決方案

    SpringBoot使用Maven打包異常-引入外部jar的問題及解決方案

    這篇文章主要介紹了SpringBoot使用Maven打包異常-引入外部jar,需要的朋友可以參考下
    2020-06-06
  • springboot接入cachecloud redis示例實踐

    springboot接入cachecloud redis示例實踐

    這篇文章主要介紹了springboot接入cachecloud redis示例實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • java中的FileInputStream三種read()函數(shù)用法

    java中的FileInputStream三種read()函數(shù)用法

    這篇文章主要介紹了java中的FileInputStream三種read()函數(shù)用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • SpringBoot服務上實現(xiàn)接口限流的方法

    SpringBoot服務上實現(xiàn)接口限流的方法

    這篇文章主要介紹了SpringBoot服務上實現(xiàn)接口限流的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Double.parseDouble()與Double.valueOf()的區(qū)別及說明

    Double.parseDouble()與Double.valueOf()的區(qū)別及說明

    這篇文章主要介紹了Double.parseDouble()與Double.valueOf()的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 半小時通透Java的泛型

    半小時通透Java的泛型

    這篇文章主要給大家介紹了關于Java中泛型使用的方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2021-09-09
  • java異常處理的簡單練習

    java異常處理的簡單練習

    下面小編就為大家?guī)硪黄猨ava異常處理的簡單練習。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 認識Java底層操作系統(tǒng)與并發(fā)基礎

    認識Java底層操作系統(tǒng)與并發(fā)基礎

    這篇文章主要介紹了認識Java底層操作系統(tǒng)與并發(fā)基礎,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • Java使用FutureTask實現(xiàn)預加載的示例詳解

    Java使用FutureTask實現(xiàn)預加載的示例詳解

    基于FutureTask的特性,通??梢允褂肍utureTask做一些預加載工作,比如一些時間較長的計算等,本文就來和大家講講具體實現(xiàn)方法吧,感興趣的可以了解一下
    2023-06-06

最新評論

高要市| 竹北市| 正安县| 许昌县| 新源县| 云浮市| 铜梁县| 乐至县| 翁源县| 常德市| 建宁县| 柘荣县| 桑植县| 庆云县| 土默特右旗| 沧州市| 汉中市| 玉溪市| 永兴县| 双鸭山市| 日照市| 镶黄旗| 内江市| 黄山市| 镇远县| 榆树市| 金堂县| 保德县| 雅江县| 涿州市| 兴国县| 囊谦县| 东山县| 韩城市| 朔州市| 泗洪县| 双柏县| 榆中县| 龙井市| 大港区| 漳浦县|