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

java使用ZipInputStream實(shí)現(xiàn)讀取和寫入zip文件

 更新時(shí)間:2023年11月06日 10:23:18   作者:bug生產(chǎn)者  
zip文檔可以以壓縮格式存儲(chǔ)一個(gè)或多個(gè)文件,本文主要為大家詳細(xì)介紹了java如何使用ZipInputStream讀取Zip文檔與寫入,需要的小伙伴可以參考下

zip壓縮

zip文檔可以以壓縮格式存儲(chǔ)一個(gè)或多個(gè)文件,可以使用ZipInputStream讀取Zip文檔,使用ZipOutputStream來(lái)寫入到Zip文件中

<!-- more -->

ZipInputStream讀取

ZipInputStream zin = new ZipInputStream(in);
ZipEntry ze;
// getNextEntry返回描述這個(gè)項(xiàng)的ZipEntry的對(duì)象
while ((ze = zin.getNextEntry()) != null) {
    // getInputStream獲取用于讀取該項(xiàng)的輸入流
        BufferedReader br = new BufferedReader(
                new InputStreamReader(zf.getInputStream(ze), charset));
  // 業(yè)務(wù)邏輯 todo
        br.close();
  // closeEntry關(guān)閉當(dāng)前打開的項(xiàng)
    zin.closeEntry();
}
zin.close();

ZipOutputStream寫入

ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));

File fileWillZip = new File(dir);

if (fileWillZip.exists()) {
    // 需要壓縮的文件是文件夾。需要遞歸進(jìn)行壓縮
    if(fileWillZip.isDirectory()){
        compressZip(zipOut,fileWillZip,fileWillZip.getName());
    } else { // 是文件,直接壓縮
        zip(zipOut,fileWillZip,dir);
    }
}
zipOut.closeEntry();
zipOut.close();



private void compressZip(ZipOutputStream zipOutput, File file, String suffixpath) {
        File[] listFiles = file.listFiles();// 列出所有的文件
        for(File fi : listFiles){
            if(fi.isDirectory()){ // 如果是文件夾,繼續(xù)遞歸
                if(suffixpath.equals("")){
                    compressZip(zipOutput, fi, fi.getName());
                }else{
                    compressZip(zipOutput, fi, suffixpath + File.separator + fi.getName());
                }
            }else{
                zip(zipOutput, fi, suffixpath);
            }
        }
    }

    public void zip(ZipOutputStream zipOutput, File file, String suffixpath) {
        try {
          // 創(chuàng)建ZipEntry對(duì)象
            ZipEntry zEntry = null;
            if(suffixpath.equals("")){
                zEntry = new ZipEntry(file.getName());
            }else{
                zEntry = new ZipEntry(suffixpath + File.separator + file.getName());
            }
          // putNextEntry將給定的ZipEntry中的信息寫出到輸出流,并定位用于寫出數(shù)據(jù)的流,然后這些數(shù)據(jù)可以通過(guò)write方法寫出到這個(gè)輸出流中
            zipOutput.putNextEntry(zEntry);
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
            byte[] buffer = new byte[1024];
            int read = 0;
            while((read = bis.read(buffer)) != -1){
                zipOutput.write(buffer, 0, read);
            }
            bis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

到此這篇關(guān)于java使用ZipInputStream實(shí)現(xiàn)讀取和寫入zip文件的文章就介紹到這了,更多相關(guān)java ZipInputStream內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中@ConfigurationProperties實(shí)現(xiàn)自定義配置綁定問題分析

    Java中@ConfigurationProperties實(shí)現(xiàn)自定義配置綁定問題分析

    這篇文章主要介紹了@ConfigurationProperties實(shí)現(xiàn)自定義配置綁定問題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java實(shí)現(xiàn)簡(jiǎn)易界面通訊錄

    Java實(shí)現(xiàn)簡(jiǎn)易界面通訊錄

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易界面通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • java開發(fā)之內(nèi)部類的用法

    java開發(fā)之內(nèi)部類的用法

    本篇文章介紹了,java開發(fā)之內(nèi)部類的用法。需要的朋友參考下
    2013-05-05
  • Java中jakarta.validation數(shù)據(jù)校驗(yàn)幾個(gè)主要依賴包講解

    Java中jakarta.validation數(shù)據(jù)校驗(yàn)幾個(gè)主要依賴包講解

    在Java開發(fā)中,BeanValidationAPI提供了一套標(biāo)準(zhǔn)的數(shù)據(jù)驗(yàn)證機(jī)制,尤其是通過(guò)JakartaBeanValidation(原HibernateValidator)實(shí)現(xiàn),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • Java并發(fā)教程之volatile關(guān)鍵字詳解

    Java并發(fā)教程之volatile關(guān)鍵字詳解

    這篇文章主要給大家介紹了關(guān)于Java并發(fā)教程之volatile關(guān)鍵字的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • SpringCloud服務(wù)注冊(cè)和發(fā)現(xiàn)組件Eureka

    SpringCloud服務(wù)注冊(cè)和發(fā)現(xiàn)組件Eureka

    對(duì)于微服務(wù)的治理而言,其核心就是服務(wù)的注冊(cè)和發(fā)現(xiàn)。在SpringCloud 中提供了多種服務(wù)注冊(cè)與發(fā)現(xiàn)組件,官方推薦使用Eureka。本篇文章,我們來(lái)講解springcloud的服務(wù)注冊(cè)和發(fā)現(xiàn)組件,感興趣的可以了解一下
    2021-05-05
  • SpringBoot整合MongoDB完整實(shí)例代碼

    SpringBoot整合MongoDB完整實(shí)例代碼

    本文主要介紹了SpringBoot整合MongoDB完整實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java如何實(shí)現(xiàn)支付寶電腦支付基于servlet版本

    Java如何實(shí)現(xiàn)支付寶電腦支付基于servlet版本

    這篇文章主要介紹了Java如何實(shí)現(xiàn)支付寶電腦支付基于servlet版本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java8 Collectors求和功能的自定義擴(kuò)展操作

    Java8 Collectors求和功能的自定義擴(kuò)展操作

    這篇文章主要介紹了Java8 Collectors求和功能的自定義擴(kuò)展操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • 如何使用SpringMVC的消息轉(zhuǎn)換器設(shè)置日期格式

    如何使用SpringMVC的消息轉(zhuǎn)換器設(shè)置日期格式

    這篇文章主要介紹了如何使用SpringMVC的消息轉(zhuǎn)換器設(shè)置日期格式問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論