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

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

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

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

jar vs zip:

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

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

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

解決方案就是通過(guò)ZipInputStream來(lái)讀取。
ZipInputStream在JDK中的util包中,而我們平時(shí)用的FileInputStream等都是在io包中的。

示例如下:

@Test
    public void test() throws Exception {
        //獲取文件輸入流
        FileInputStream input = new FileInputStream("D:\\2022-03-28.zip");
        //獲取ZIP輸入流(一定要指定字符集Charset.forName("GBK")否則會(huì)報(bào)java.lang.IllegalArgumentException: MALFORMED)
        ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), Charset.forName("GBK"));
        //定義ZipEntry置為null,避免由于重復(fù)調(diào)用zipInputStream.getNextEntry造成的不必要的問(wèn)題
        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ù)進(jìn)行相關(guān)處理
                 ......
                }
            }
        }
        //一定記得關(guān)閉流
        zipInputStream.closeEntry();
        input.close();
    }

補(bǔ)充:

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

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

這里寫(xiě)圖片描述

代碼如下:

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無(wú)需解壓直接讀取ZIP壓縮包里的文件及內(nèi)容的文章就介紹到這了,更多相關(guān)java讀取zip壓縮包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

    簡(jiǎn)單談?wù)凷pringMVC轉(zhuǎn)發(fā)和重定向的區(qū)別

    下面小編就為大家?guī)?lái)一篇簡(jiǎn)單談?wù)凷pringMVC轉(zhuǎn)發(fā)和重定向的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • windows后臺(tái)運(yùn)行Java jar包實(shí)現(xiàn)方式

    windows后臺(tái)運(yùn)行Java jar包實(shí)現(xiàn)方式

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

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

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

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

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

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

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

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

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

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

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

    Mybatis中的緩存機(jī)制解析

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

最新評(píng)論

晴隆县| 黎川县| 沾益县| 东安县| 会理县| 娱乐| 新绛县| 江华| 交城县| 平乐县| 确山县| 锡林浩特市| 屯门区| 达州市| 绥江县| 嘉鱼县| 农安县| 百色市| 白山市| 崇阳县| 吴忠市| 綦江县| 双桥区| 栾川县| 东源县| 剑河县| 上栗县| 镇江市| 华坪县| 乐业县| 巴马| 朔州市| 玉山县| 志丹县| 南通市| 涞源县| 上高县| 房山区| 于田县| 桃园县| 凌海市|