第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java ZipInputStream 拋出 zip.ZipException:解析嵌套 zip 文

Java ZipInputStream 拋出 zip.ZipException:解析嵌套 zip 文

撒科打諢 2024-01-05 10:49:03
首先,我要承認(rèn)我已經(jīng)在這里和互聯(lián)網(wǎng)上閱讀了幾個(gè)線程,但我的問題仍然存在,而且似乎有所不同。我有一個(gè) zip 文件,其中包含多個(gè) .txt 文件、目錄、該目錄的子目錄等。里面還有大量的 zip 存檔,里面有 zip、目錄和文件。最深層次的歸檔是 5 個(gè)步驟 -> 5 個(gè) zip,一個(gè)包含另一個(gè),其中包含不同的文件。我有這個(gè)代碼:ZipFile zipFile = new ZipFile(Objects.requireNonNull(this.classLoader.getResource("inputs.zip")).getFile());    Enumeration<? extends ZipEntry> entries = zipFile.entries();    while (entries.hasMoreElements()) {        ZipEntry entry = entries.nextElement();        InputStream stream = zipFile.getInputStream(entry);        System.out.println(entry.getName());        processZipFile(stream);    }這是 processZipFile:private void processZipFile(InputStream stream) throws IOException {    ZipInputStream zipInputStream = new ZipInputStream(stream);    ZipEntry zipEntry = zipInputStream.getNextEntry();    while (zipEntry != null) {        System.out.print("    /" + zipEntry.getName());        if (zipEntry.getName().endsWith(".zip")) {            processZipFile(stream);        }        zipEntry = zipInputStream.getNextEntry();    }在歸檔級(jí)別 3 之前,一切似乎都工作正常,列出了所有目錄、zip、gzip 和子目錄,但當(dāng)涉及到處理 input.zip/1.zip/2.zip 之類的內(nèi)容時(shí),它會(huì)拋出異常Exception in thread "main" java.util.zip.ZipException: invalid distance too far back正如我在 Java 8 文檔中讀到的ZipInputStream.getNextEntry(): Reads the next ZIP file entry and positions the stream at the beginning of the entry data.因?yàn)樵讷@取入口程序后就會(huì)拋出異常。在這種情況下,“2.zip”內(nèi)的文件相當(dāng)大 - 800 MB,與最大大小為 3 MB 的其他情況相比 - 我想知道它是否會(huì)影響程序。我試圖在不解壓這些拉鏈的情況下完成所有這些事情,這在這里非常重要。我知道這種錯(cuò)誤通常與損壞的 zip 文件有關(guān),但這些錯(cuò)誤是完全合法的。所以我的問題是 - 我如何瀏覽所有這些嵌套的 zip 文件?編輯/解決方案:根據(jù) Talex 提出的更改,我已經(jīng)修復(fù)了我的代碼,ZipInputStreams使其能夠在標(biāo)準(zhǔn)InputStreams. 它不再拋出錯(cuò)誤,但不知怎的,它仍然跳過比 3 級(jí)歸檔更深的嵌套 zip(仍然不確定這是否是正確的命名方法,哈哈)。解決方案也很簡單 - 當(dāng)我將它循環(huán)傳遞給我的函數(shù)時(shí),我包裝ZipInputStream到另一個(gè)。
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

代替

processZipFile(stream);

你需要使用

processZipFile(zipInputStream);


查看完整回答
反對(duì) 回復(fù) 2024-01-05
  • 1 回答
  • 0 關(guān)注
  • 164 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)