我有一个 MyFile.zip,它有一个主目录“MyMainFolder”,其中有几个子目录,我想提取其中一个(MySubFolder)......及其所有子目录和内容。
我试图弄清楚如何“进入” MyMainFolder ,以便我可以提取“MySubFolder”。
我有一些代码可以提取一个文件夹,只要我要查找的文件夹作为 zip 中的主文件夹存在……我可以检测主文件夹是否称为“MyMainFolder”,因此它知道要查看该文件夹和从那里提取而不是在主 zip 根目录中查找 MySubFolder)。
using (ZipFile zip1 = ZipFile.Read(fileName))
{
zipFile = ZipFile.Read(@""+fileName);
var result = zipFile.Any(entry => entry.FileName.Contains("MySubFolder"));
if (result == false)
{
MessageBox.Show("MyMainFolder detected....Extracting from MyMainFolder...");
// something here that will extract JUST MySubFolder and contents
} else {
foreach (var e in selection)
{
var selection = (from e in zip1.Entries where (e.FileName).Contains("NySubfolder") select e)
e.Extract(outputDirectory);
}
}
}
到目前为止,我已经尝试在 if-else 的每个部分中放置一个单独的 using,并尝试创建一个单独的 selectionX,在其中我尝试强制根文件夹名称(对于这个实验,它始终是“MyMainFolder”)成为它所浏览内容的一部分,认为我可以提取 MySubFolder,但我也无法让它工作。我尝试合并我在 stackflow 和 elsehwere 上找到的其他几种方法,例如使用“如何提取文件,但忽略 zipfile 中的路径”和其他此类帖子的部分内容来尝试找到一种“跳过”主根目录的方法解压时的文件夹。(以便它仅获取“MySubFolder”(和内容)并提取到 outputDirectory(不是 MyMainFolder\MySubFolder ...)
任何帮助表示赞赏。谢谢!!