国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java 解讀zip文件,獲取壓縮包內(nèi)各文件的流的集合

這篇具有很好參考價(jià)值的文章主要介紹了java 解讀zip文件,獲取壓縮包內(nèi)各文件的流的集合。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

import cn.hutool.core.io.FileUtil;
import com.gbx.pay.service.monolith.common.exception.ui.ErrorException;
import org.apache.commons.lang3.StringUtils;

import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

/**
 * zip文件讀取工具類
 *
 * @author gbx
 */
public class ZipFileReadUtils {

    /**
     * 解讀zip文件
     *
     * @param zipFile    壓縮文件
     * @param suffixType 文件后綴(非空時(shí)只處理固定后綴的文件)
     * @return 處理結(jié)果
     * @throws IOException
     */
    public static List<InputStream> readZipToInputStreamList(File zipFile, String suffixType) throws IOException {
        List<InputStream> list = new ArrayList<>();
        //判斷文件是否存在
        if (!zipFile.exists()) {
            throw new ErrorException("無效的zip文件");
        }
        //獲取文件流
        InputStream inputStream = FileUtil.getInputStream(zipFile);
        //轉(zhuǎn)化文件流為壓縮文件流
        ZipInputStream zipInputStream = new ZipInputStream(inputStream, Charset.forName("gbk"));
        ZipEntry zipEntry;
        while ((zipEntry = zipInputStream.getNextEntry()) != null) {
            //如果文件后綴條件不為空且后綴條件不符則跳過文件讀取
            if (StringUtils.isNotBlank(suffixType) && !zipEntry.getName().endsWith(suffixType)) {
                continue;
            }

            //文件讀取處理
            byte[] buffer = new byte[1024];
            int len;
            ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
            while ((len = zipInputStream.read(buffer)) != -1) {
                byteStream.write(buffer, 0, len);
            }
            // 關(guān)閉流
            byteStream.close();

            //讀取的文件轉(zhuǎn)為所需的流添加到集合中
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteStream.toByteArray());
            list.add(byteArrayInputStream);
        }
        return list;
    }

    /**
     * 解讀zip文件
     *
     * @param filePath   壓縮文件路徑
     * @param suffixType 文件后綴(非空時(shí)只處理固定后綴的文件)
     * @return 處理結(jié)果
     * @throws IOException
     */
    public static List<InputStream> readZipToInputStreamList(String filePath, String suffixType) throws IOException {
        File zipFile = new File(filePath);
        return readZipToInputStreamList(zipFile, suffixType);
    }
}

解讀zip文件,把zip文件內(nèi)的眾文件轉(zhuǎn)化成流集合,方便其他后續(xù)操作文章來源地址http://www.zghlxwxcb.cn/news/detail-690639.html

到了這里,關(guān)于java 解讀zip文件,獲取壓縮包內(nèi)各文件的流的集合的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java將指定文件夾按照文件目錄壓縮為zip壓縮包

    將指定的壓縮包作為流發(fā)送給瀏覽器 下面粘貼一些沒有用的東西 ,是我自已業(yè)務(wù)的邏輯,,主要邏輯是根據(jù)傳入文件不同 判斷將壓縮包發(fā)送給瀏覽器 還是將xls模板發(fā)送給瀏覽器

    2024年02月16日
    瀏覽(27)
  • Java壓縮文件為ZIP并加密

    當(dāng)您需要將文件加密并保存為ZIP文件時(shí),可以使用 net.lingala.zip4j 庫(kù)來實(shí)現(xiàn)。 步驟1:準(zhǔn)備工作 首先,確保您已經(jīng)包含了 net.lingala.zip4j 庫(kù),并將其添加到您的Java項(xiàng)目中。您可以通過Maven或Gradle等構(gòu)建工具來添加這個(gè)庫(kù)。倉(cāng)庫(kù)地址 步驟2:?jiǎn)挝募嚎s 接下來,編寫Java代碼來執(zhí)行

    2024年02月05日
    瀏覽(19)
  • java 文件壓縮zip【兩種方式】

    ?一、普通方式 二、使用zip4j方式 引入jar: ?代碼塊:

    2024年02月11日
    瀏覽(19)
  • Java 壓縮多個(gè)文件為zip包(中間不生成臨時(shí)文件,直接壓縮為zip二進(jìn)制流),以及解壓zip包二進(jìn)制流為文件

    Java 壓縮多個(gè)文件為zip包(中間不生成臨時(shí)文件,直接壓縮為zip二進(jìn)制流),以及解壓zip包二進(jìn)制流為文件

    這篇博客將提供倆種方法, 提前生成要壓縮的多個(gè)文件,然后讀取文件夾多層或一層去遍歷壓縮zip包 直接用原始文件名稱及二進(jìn)制流,壓縮返回zip包二進(jìn)制流,中間不生成冗余文件; 很明顯方法2更優(yōu)一些; 解壓zip文件或者zip文件流驗(yàn)證; 壓縮倆個(gè)文件到zip包,并分別解析

    2024年02月06日
    瀏覽(22)
  • java~將多個(gè)輸出流壓縮成一個(gè)zip文件

    hutool工具包可以幫我們完成這件事,幾行代碼可以實(shí)現(xiàn),我們提供兩種方式,壓縮本地文件和壓縮內(nèi)存流。 擴(kuò)展閱讀:如果希望進(jìn)行模版技術(shù),可以看一下org.apache.velocity.tools:velocity-tools-generic包,可直接引用依賴 *版本 引用依賴 org.apache.velocity 是 Apache Velocity 模板引擎的 Ja

    2024年02月05日
    瀏覽(25)
  • Java的zip文件壓縮與解壓:ZipInputStream,ZipOutputStream

    Java的zip文件壓縮與解壓:ZipInputStream,ZipOutputStream

    ?? 用ZipOutputStream來壓縮一個(gè)文件夾時(shí),要搭配ZipEntry來使用。ZipEntry是用來創(chuàng)建壓縮文件的。 ?? 舉個(gè)例子,向壓縮文件中添加一個(gè)文件的代碼: 如下圖: ?? 在創(chuàng)建ZipEntry對(duì)象時(shí)可以指定文件在壓縮包的位置:new ZipEntry(“second-dirsecond-01.txt”) ?? 在使用ZipOutputStrea

    2024年02月16日
    瀏覽(31)
  • Java實(shí)現(xiàn)打包壓縮文件或文件夾生成zip以實(shí)現(xiàn)多文件批量下載

    Java實(shí)現(xiàn)打包壓縮文件或文件夾生成zip以實(shí)現(xiàn)多文件批量下載

    有時(shí)候在系統(tǒng)中需要一次性下載多個(gè)文件,但逐個(gè)下載文件比較麻煩。這時(shí)候,最好的解決辦法是將所有文件打包成一個(gè)壓縮文件,然后下載這個(gè)壓縮文件,這樣就可以一次性獲取所有所需的文件了。 下面是一個(gè)名為CompressUtil的工具類的代碼,它提供了一些方法來處理文件壓

    2024年02月06日
    瀏覽(32)
  • java 批量下載將多個(gè)文件(minio中存儲(chǔ))壓縮成一個(gè)zip包

    java 批量下載將多個(gè)文件(minio中存儲(chǔ))壓縮成一個(gè)zip包

    我的需求是將minio中存儲(chǔ)的文件按照查詢條件查詢出來統(tǒng)一壓成一個(gè)zip包然后下載下來。 思路:針對(duì)這個(gè)需求,其實(shí)可以有多個(gè)思路,不過也大同小異,一般都是后端返回流文件前端再處理下載,也有少數(shù)是壓縮成zip包之后直接給下載鏈接返回到前端,前端收到鏈接url直接

    2024年02月10日
    瀏覽(64)
  • Java利用Apache compress包實(shí)現(xiàn)文件夾壓縮成Zip包

    Apache common提供了很多實(shí)用的工具包,下面就說一下如何用compress包來壓縮文件夾。先引入compress,io和lang3這3個(gè)工具包: 這個(gè)方法實(shí)現(xiàn)了將文件夾下所有的文件壓縮成zip包,并輸出到文件流中,可以直接寫入到文件或提供給前端下載,工具類如下: 執(zhí)行main函數(shù)跑測(cè)試用例,發(fā)

    2024年01月20日
    瀏覽(23)
  • Qt 實(shí)現(xiàn)壓縮文件、文件夾和解壓縮操作zip

    通過Qt自帶的庫(kù)來實(shí)現(xiàn),使用多線程方式,通過信號(hào)和槽來觸發(fā)壓縮與解壓縮,并將壓縮和解壓縮結(jié)果回傳過來。 使用的類: 1、在.pro文件中添加模塊gui-private 若未cmake工程,需要在CMakeList.txt中添加 待驗(yàn)證: 1、中文路徑,文件名含有中文 2、隱藏文件夾,.dir和…dir,例如:

    2024年02月14日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包