我有一个方案来压缩一些文件和文件夹(带子文件夹)。在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");
}