打开内部zip文件而不解压缩内部zip条目

时间:2017-01-18 15:15:44

标签: c# unzip dotnetzip

我们使用DotNetZipLib来处理zip文件。

我有一个zip文件,其中包含另一个包含大量(大)文件的zip文件。

outerZipFile.zip
  -> foo.ext
  -> innerZipFile    
      -> file 1
      -> file 2
  -> bar.ext

我想打开内部zip文件,不必须立即读取整个条目将其解压缩到硬盘 。我发现无法打开内部条目作为流,因为这会引发异常:

public void Foo(Stream source)
{  
  using (var zip = ZipFile.Read(source))
  {
    foreach (var entry in zip.Entries)
    {
      if (entry.FileName != "innerZipFile")
      {
        continue;
      }
      var stream = entry.OpenReader();
      // throws 'Ionic.Zip.ZipException'
      // Cannot read that as a ZipFile
      var innerZip = ZipFile.Read(stream);
    }
  }
}

有没有办法从流中打开内部zip而不必阅读完整的数据?

我的目标是只读取一些内部条目,而不必提取整个内部zip(甚至是内存),因为内部zip可以达到1GB的数据。

0 个答案:

没有答案