WinZip无法打开使用Apache commons压缩ApI准备的压缩文件

时间:2015-04-22 16:53:52

标签: java apache zip unzip winzip

我有一个方案来压缩一些文件和文件夹(带子文件夹)。在Apache Commons Compress library帖子的帮助下,我使用this完美地实现了这一点。我有一个使用java.util.zip库来解压缩文件的应用程序。此实用程序无法读取 Apache Commons Compress 压缩文件夹,第一个ZipEntry为空。

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

我还尝试使用WinZip解压缩压缩zip文件,它会出错 - 无法打开" 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");
   }

0 个答案:

没有答案