忽略拉链中的树状花序并用DotNetZip在根部提取

时间:2012-07-13 09:48:39

标签: c# dotnetzip

我有一个受密码保护的压缩文件,其中包含另一个pw压缩文件,我想在第二个zip中的文件夹0下检索xml文件。但我想在根文件夹(args [0])中有这个xml,你有什么想法吗?

总是在root / 0 / project.xml中解压缩,我想要root / project.xml实际上我希望xml在与第一个zip相同的文件夹中。

using (ZipFile zip = ZipFile.Read(args[0])) {

     zip.Password = "pass1";
     zip.ExtractAll(".",ExtractExistingFileAction.OverwriteSilently);
     using (ZipFile zip2 = ZipFile.Read("0.xtz"))
     {
          ZipEntry e = zip2["0/project.xml"];
          e.ExtractWithPassword(".", ExtractExistingFileAction.OverwriteSilently, "pass2");

     }

}

2 个答案:

答案 0 :(得分:0)

为ZipFile

FlattenFoldersOnExtract属性设置为true

答案 1 :(得分:0)

我在案件中找到了一个特别的答案。如果您知道文件的名称,那么诀窍就是只保留文件名

ZipEntry e = zip2["0/project.xml"];
e.Filename="project.xml"
e.ExtractWithPassword(".", ExtractExistingFileAction.OverwriteSilently, "pass2");

如果您有多个条目要删除任何包含“/”的文件夹并保留文件名,您也可以进行循环。