我有一个压缩一些文件和文件夹(带有子文件夹)的场景。在这篇文章的帮助下,我能够使用Apache Commons Compress library完美地实现这一点。我有一个使用库来解压缩文件的应用程序。此实用程序无法读取Apache Commons Compress压缩文件夹,第一个为空。java.util.zip
ZipEntry
但是,当使用 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");
}