2012-07-13 53 views
0

我有一个密码保护的压缩文件,其中包含另一个pw压缩文件,我想检索第二个zip文件夹下的一个文件夹0下的xml文件。但我想在根文件夹(args [0])中有这个xml,你有想法吗?忽略在一个zip文件中的树状结构并用DotNetZip在根文件中提取

它始终在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"); 

    } 

} 

回答

0

设置FlattenFoldersOnExtract属性true为zip文件

+0

实际上它可以用于整个zip。 – xenom 2012-07-13 10:00:25

0

我发现我的情况下,一个特定的答案。如果您知道文件的名称,诀窍就是只保留文件名

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

你也可以做一个循环,如果你有几个条目删除包含“/”的任何文件夹,并只保留文件名。