首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C# DotNetZip提取SubDirectory?

如何使用C# DotNetZip提取SubDirectory?
EN

Stack Overflow用户
提问于 2013-03-28 11:17:21
回答 1查看 1.8K关注 0票数 0

我有一个MyFile.zip,它有一个主目录"MyMainFolder",里面有几个SubDirectories,其中一个我想提取(MySubFolder)...with它的所有子目录和内容。

我正在尝试弄清楚如何“步入”MyMainFolder,这样我就可以提取“我的子文件夹”。

我有一些代码,只要我正在寻找的文件夹作为主文件夹存在于zip...and中,我就可以检测到主文件夹是否名为"MyMainFolder“,这样它就知道要在里面查找并从那里解压缩,而不是在主压缩根目录中查找MySubFolder)。

代码语言:javascript
复制
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的每个部分中放置一个单独的the,并尝试创建一个单独的selectionX,在其中我试图强制根文件夹名称(在这个实验中始终是'MyMainFolder‘)成为它所查看的内容的一部分,我认为我可以提取MySubFolder,但我也无法让它工作。我尝试将我在stackflow和其他网站上找到的其他几种方法结合起来,比如使用《如何解压文件,但忽略zipfile中的路径》和其他类似的帖子,试图找到一种在解压时跳过主根文件夹的方法。(因此它只获取'MySubFolder‘(和内容)并提取到outputDirectory (而不是MyMainFolder\MySubFolder...) )

任何帮助都是非常感谢的。谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-06 10:33:26

通过列举整个内容,直到我遇到我正在寻找的东西,这是可行的,但作为一个实验,我想看看是否可以用另一种方式来完成。

因为我无法检查根文件夹中的子文件夹的名称,所以我认为我可以在解析它时匹配我正在寻找的内容,只提取我想要的内容,然后更改输出路径。

代码语言:javascript
复制
using (ZipFile zip1 = ZipFile.Read(fileName))
{
    zipFile = ZipFile.Read(@""+fileName);
    var result = zipFile.Any(entry => entry.FileName.Contains("MySubFolder"));

    if (result == false)
    {
        // something here that will extract JUST MySubFolder and content
        string TestX = Path.GetDirectoryName(e.FileName) ;
        string MyNewPath = outputDirectory+@"\"+TestX ;
        e.Extract(MyNewPath);
    } else {
        foreach (var e in selection)
   {             
        var selection = (from e in zip1.Entries where (e.FileName).Contains("MySubfolder")
        .select e)               
        e.Extract(outputDirectory);        
   }
}

诸如此类的事情..不是很有用,但很有趣,帮助我学到了一点东西。(如果没有其他事情,请举一个不做things..hehe的例子)谢谢

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15673665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档