假设我有一个名为Bundles.zip的 .zip 文件,直接在Bundles.zip里面,有一些文件和一些文件夹。这是 .zip 文件的样子:
现在,我想从“Bundles”文件夹中提取 EVERYTHING 。我的程序已经知道它需要从哪个文件夹中提取文件的名称,在这种情况下是 Bundles 。压缩文件中的 Bundles 文件夹可以包含文件、子文件夹、子文件夹中的文件,基本上可以包含任何东西,如下所示:
我只需要将Bundles文件夹中的所有内容提取到输出目录中。
我该如何在Java中实现这一点?我已经找到了提取zip文件中所有文件和文件夹的答案,但我需要仅提取zip文件中的特定文件夹,而不是全部内容。
到目前为止,工作代码如下:
ZipFile zipFile = new ZipFile(mapsDirectory + "mapUpload.tmp");
Enumeration zipEntries = zipFile.entries();
String fname;
String folderToExtract = "";
String originalFileNameNoExtension = originalFileName.replace(".zip", "");
while (zipEntries.hasMoreElements()) {
ZipEntry ze = ((ZipEntry)zipEntries.nextElement());
fname = ze.getName();
if (ze.isDirectory()) //if it is a folder
{
if(originalFileNameNoExtension.contains(fname)) //if this is the folder that I am searching for
{
folderToExtract = fname; //the name of the folder to extract all the files from is now fname
break;
}
}
}
if(folderToExtract == "")
{
printError(out, "Badly packaged Unturned map error: " + e.getMessage());
return;
}
//now, how do i extract everything from the folder named folderToExtract?
到目前为止的代码中,originalFileName 是类似于 "The Island.zip" 的东西。在 zip 文件中有一个名为 The Island 的文件夹。我需要找到与 zip 文件名匹配的 zip 文件内部的文件夹,并提取其中的所有内容。