1

我有一个压缩一些文件和文件夹(带有子文件夹)的场景。在这篇文章的帮助下,我能够使用Apache Commons Compress library完美地实现这一点。我有一个使用库来解压缩文件的应用程序。此实用程序无法读取Apache Commons Compress压缩文件夹,第一个为空。java.util.zipZipEntry

但是,当使用 WinZip 准备压缩文件时,该实用程序在解压缩它时没有问题。

我还尝试使用 WinZip 解压缩压缩 zip 文件,它给出了一个错误 - Unable to open the local header for "filename"。知道如何添加本地头文件吗?我检查了源代码ZipArchiveOutputStream,它确实 writetolocalheaderFile。

任何指向这个问题的指针?解压码如下:

{
File destDir = new File(destDirectory);
ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zipIn.getNextEntry();

// iterates over entries in the zip file
while (entry != null) {
    String filePath = destDirectory + File.separator + entry.getName();
    if (!entry.isDirectory()) {
        // if the entry is a file, extracts it
        extractFile(zipIn, filePath, CurrentSize, totalSize);
    } else {
        // if the entry is a directory, make the directory
        File dir = new File(filePath);
        dir.mkdir();
    }
    zipIn.closeEntry();
    entry = zipIn.getNextEntry();
}
zipIn.close();
}

但是我可以通过其他方式看到 zip 文件中有可用的条目,但遗憾的是不能在实用程序中包含新代码。代码片段:

ZipFile zipFile =  new ZipFile(new File(zipFilePath));
Enumeration entries = zipFile.entries();
   while(entries.hasMoreElements()) {
       ZipEntry ze = (ZipEntry) entries.nextElement();
       System.out.println(ze.getName());
       if(!ze.isDirectory())
           System.out.println("Is not a directory");
   }
4

0 回答 0