【问题标题】:JAVA - zip4j, extract all text files ONLY from a zip fileJAVA - zip4j,仅从 zip 文件中提取所有文本文件
【发布时间】:2014-10-13 07:01:06
【问题描述】:

我们可以使用 zip4j 中给出的 extractAll 方法从 zoip 文件中提取所有文件,但是如果我只需要提取一种文件,比如文本文件或名称中包含特定子字符串的文件,该怎么办?文件的??有没有办法使用 zip4j 做到这一点

我认为这个问题可能与我的问题有关

Read Content from Files which are inside Zip file

但这并不是我想要的。 谁能详细解释一下使用这个 ZipEntry 的东西,如果它有助于解决我的问题吗?

【问题讨论】:

  • 您是否先查看了lingala.net/zip4j 网站?他们的论坛会回答这个问题吗?
  • 我在论坛“从拆分 Zip 文件(例如:z01、z02、...zip)中创建或提取文件”中提到了这一点,但它并没有说明您是否可以根据文件类型或通过在 zip 文件夹内的文件名中指定子字符串

标签: java zip4j


【解决方案1】:

试试下面的代码

        ZipFile zipFile = new ZipFile("myzip.zip");

        // Get the list of file headers from the zip file
        List fileHeaderList = zipFile.getFileHeaders();

        // Loop through the file headers
        for (int i = 0; i < fileHeaderList.size(); i++) {
            FileHeader fileHeader = (FileHeader)fileHeaderList.get(i);              
            String fileName = fileHeader.getFileName();
            if(fileName.contains(".java")){
                zipFile.extractFile(fileHeader, "c:\\scrap\\");
            }

        }

【讨论】:

  • 嗨prashant,如果我不知道文件名,我只需要提取文本文件怎么办(这是我的实际问题)
  • @VasanthNagKV 我已经更正了代码,请参阅上面的答案。这将解决您的问题。
  • @prashantthakre 您的代码还将提取文件“somefile.java.exe”。使用endsWith 的不区分大小写的变体可能比contains 更好