假设我有一个 zip 文件MyZipFile.zip
,其中包含 (1) 一个文件MyFile.txt
和 (2) 一个MyFolder
包含文件的文件夹MyFileInMyFolder.txt
,即如下所示:
MyZipFile.zip
|->MyFile.txt
|->MyFolder
|->MyFileInMyFolder.txt
我想解压这个 zip 档案。我能够在网上搜索到的最常见的代码示例使用的ZipInputStream
类有点像粘贴在这个问题底部的代码。但是,使用上面的示例,问题在于它会创建MyFolder
但不会解压缩MyFolder
. 任何人都知道是否可以使用ZipInputStream
或通过任何其他方式解压缩 zip 存档中文件夹的内容?
public static boolean unzip(File sourceZipFile, File targetFolder)
{
// pre-stuff
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(sourceZipFile));
ZipEntry zipEntry = null;
while ((zipEntry = zipInputStream.getNextEntry()) != null)
{
File zipEntryFile = new File(targetFolder, zipEntry.getName());
if (zipEntry.isDirectory())
{
if (!zipEntryFile.exists() && !zipEntryFile.mkdirs())
return false;
}
else
{
FileOutputStream fileOutputStream = new FileOutputStream(zipEntryFile);
byte buffer[] = new byte[1024];
int count;
while ((count = zipInputStream.read(buffer, 0, buffer.length)) != -1)
fileOutputStream.write(buffer, 0, count);
fileOutputStream.flush();
fileOutputStream.close();
zipInputStream.closeEntry();
}
}
zipInputStream.close();
// post-stuff
}