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

Java無需解壓直接讀取ZIP壓縮包里的文件及內(nèi)容

 更新時間:2024年03月15日 10:49:08   作者:碼農(nóng)娟  
最近開發(fā)的時候遇到要獲取到zip壓縮包里面的文件內(nèi)容,解決方案就是通過ZipInputStream來讀取,下面通過實例代碼介紹Java無需解壓直接讀取ZIP壓縮包里的文件及內(nèi)容,感興趣的朋友跟隨小編一起看看吧

Java無需解壓直接讀取ZIP壓縮包里的文件及內(nèi)容

jar vs zip:

jar 文件和 zip 文件都是歸檔文件,并且都經(jīng)過壓縮。事實上,jar 文件使用與 zip 文件相同的存檔和壓縮技術(shù),所以 jar 文件實際上是一種特定類型的 zip 文件。(JAR 文件本質(zhì)上是一個包含可選 META-INF 目錄的 zip 文件。)這一切都意味著:

您可以使用與打開 zip 文件相同的工具打開 jar 文件
jar 文件是 zip 文件的子集,因此如果 zip 文件遵循 jar 規(guī)范,則它可以用作 jar 文件。

最近開發(fā)的時候遇到要獲取到zip壓縮包里面的文件內(nèi)容,一開始的想法是先通過代碼執(zhí)行解壓,然后讀取文件內(nèi)容,但是感覺好麻煩,于是度了一下,發(fā)現(xiàn)可以無需解壓直接讀取,而且還是JDK提供給我們的工具。

解決方案就是通過ZipInputStream來讀取。
ZipInputStream在JDK中的util包中,而我們平時用的FileInputStream等都是在io包中的。

示例如下:

@Test
    public void test() throws Exception {
        //獲取文件輸入流
        FileInputStream input = new FileInputStream("D:\\2022-03-28.zip");
        //獲取ZIP輸入流(一定要指定字符集Charset.forName("GBK")否則會報java.lang.IllegalArgumentException: MALFORMED)
        ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), Charset.forName("GBK"));
        //定義ZipEntry置為null,避免由于重復調(diào)用zipInputStream.getNextEntry造成的不必要的問題
        ZipEntry ze;
        List<List<Object>> list;
        //循環(huán)遍歷
        while ((ze = zipInputStream.getNextEntry()) != null) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            if (!ze.isDirectory() && ze.toString().endsWith("xls")) {
                //讀取
                byte[] buffer = new byte[1024];
                int len;
                while ((len = zipInputStream.read(buffer)) > -1) {
                    baos.write(buffer, 0, len);
                }
                baos.flush();
                InputStream stream = new ByteArrayInputStream(baos.toByteArray()); //excel 流
                //根據(jù)excel輸入流讀取EXCEL中的數(shù)據(jù)
                ExcelReader excelReader = ExcelUtil.getReader(stream);
                list =  excelReader.read(2, excelReader.getRowCount());
                for(List<Object> objList : list){
                 objList.get(0);
                 objList.get(1); 
                 //獲取到數(shù)據(jù)進行相關(guān)處理
                 ......
                }
            }
        }
        //一定記得關(guān)閉流
        zipInputStream.closeEntry();
        input.close();
    }

補充:

java 直接讀取zip文件和文件內(nèi)容

不解壓zip文件,直接讀取zip包內(nèi)的文件夾以及文件內(nèi)容
zip包內(nèi)內(nèi)容:

這里寫圖片描述

代碼如下:

import java.io.*;
import java.nio.charset.Charset;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class ReadFile {
    public static void main(String[] args) throws IOException {
        String path = "F:\\*******\\201707\\78641695079026649.zip";
        ZipFile zf = new ZipFile(path);
        InputStream in = new BufferedInputStream(new FileInputStream(path));
        Charset gbk = Charset.forName("gbk");
        ZipInputStream zin = new ZipInputStream(in,gbk);
        ZipEntry ze;
        while((ze = zin.getNextEntry()) != null){
            if(ze.toString().endsWith("txt")){
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(zf.getInputStream(ze)));
                String line;
                while((line = br.readLine()) != null){
                    System.out.println(line.toString());
                }
                br.close();
            }
            System.out.println();
        }
        zin.closeEntry();
    }
}

到此這篇關(guān)于Java無需解壓直接讀取ZIP壓縮包里的文件及內(nèi)容的文章就介紹到這了,更多相關(guān)java讀取zip壓縮包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文掌握Spring Cookie和Session 是什么及區(qū)別介紹

    一文掌握Spring Cookie和Session 是什么及區(qū)別介紹

    Cookie和Session都是用于在客戶端和服務器之間傳遞信息的技術(shù),但它們的工作方式和使用場景有所不同,Cookie是在客戶端保存用戶信息的一種機制,而Session是在服務器端保存用戶信息的一種機制,本文介紹Spring Cookie和Session 是什么,感興趣的朋友一起看看吧
    2025-01-01
  • java實現(xiàn)圖片縮放、旋轉(zhuǎn)和馬賽克化

    java實現(xiàn)圖片縮放、旋轉(zhuǎn)和馬賽克化

    這篇文章主要為大家詳細介紹了java實現(xiàn)圖片縮放、旋轉(zhuǎn)和馬賽克化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 簡單談談SpringMVC轉(zhuǎn)發(fā)和重定向的區(qū)別

    簡單談談SpringMVC轉(zhuǎn)發(fā)和重定向的區(qū)別

    下面小編就為大家?guī)硪黄唵握務凷pringMVC轉(zhuǎn)發(fā)和重定向的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • windows后臺運行Java jar包實現(xiàn)方式

    windows后臺運行Java jar包實現(xiàn)方式

    本文記錄了一個在Windows上運行Java程序,并讓其后臺運行的方法,通過創(chuàng)建start.txt和shutdown.txt文件,并將其后綴名改為bat,可以實現(xiàn)程序的啟動和停止
    2026-04-04
  • Java中char[] 和 String 類型占用字節(jié)大小問題

    Java中char[] 和 String 類型占用字節(jié)大小問題

    這篇文章主要介紹了Java中char[] 和 String 類型占用字節(jié)大小問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 基于swing實現(xiàn)窗體拖拽和拉伸

    基于swing實現(xiàn)窗體拖拽和拉伸

    這篇文章主要為大家詳細介紹了基于swing實現(xiàn)窗體拖拽和拉伸,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 基于Springboot實現(xiàn)JWT認證的示例代碼

    基于Springboot實現(xiàn)JWT認證的示例代碼

    本文主要介紹了基于Springboot實現(xiàn)JWT認證,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 使用Java實現(xiàn)查看線程的運行狀態(tài)(附源碼)

    使用Java實現(xiàn)查看線程的運行狀態(tài)(附源碼)

    在現(xiàn)代 Java 應用中,線程的運行狀態(tài)對于排查問題和優(yōu)化性能具有至關(guān)重要的作用,本文將使用Java編寫一個查看線程運行狀態(tài)的工具,有需要的可以了解下
    2025-03-03
  • java8 Instant 時間及轉(zhuǎn)換操作

    java8 Instant 時間及轉(zhuǎn)換操作

    這篇文章主要介紹了java8 Instant 時間及轉(zhuǎn)換操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Mybatis中的緩存機制解析

    Mybatis中的緩存機制解析

    這篇文章給大家介紹mybatis中的緩存機制,本文結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2025-11-11

最新評論

中江县| 宁陕县| 棋牌| 虞城县| 青神县| 正宁县| 深泽县| 怀仁县| 商都县| 德兴市| 萍乡市| 磐石市| 汾西县| 壶关县| 湖南省| 安阳市| 尤溪县| 朝阳县| 军事| 白银市| 固阳县| 昂仁县| 佛冈县| 上杭县| 连山| 阿合奇县| 航空| 郧西县| 孝昌县| 呼和浩特市| 西乌珠穆沁旗| 措勤县| 宁城县| 海阳市| 阜新| 永福县| 克拉玛依市| 行唐县| 松阳县| 乳源| 望奎县|