【问题标题】:Decompress ZLib archive containing directory解压包含目录的 ZLib 存档
【发布时间】:2014-05-30 13:12:48
【问题描述】:

我有一个 Zlib 格式的存档。我正在尝试使用 C# 对其进行解压缩。存档包含一个文件和一个包含更多文件和文件夹的文件夹。到目前为止,我已经能够解压缩单个顶级文件。但是,该目录并没有神奇地出现,我什至不知道从哪里开始。至此,我已经用 DeflateStream 成功解压了顶层文件。我有 DotNetZip 并且正在使用它,但我不知道如何从 here 找到的解压缩函数返回的字节数组中创建一个充满文件的文件夹。

【问题讨论】:

  • 有什么原因不能使用 .NET 4.5 附带的 ZipArchive 类?发布一些代码,我们会提供帮助!
  • 我没听说过。但是,我尝试使用来自MSDN 的代码并得到一个带有消息End of Central Directory record could not be found 的InvalidDataException。那个类适合解压ZLib吗?
  • 没有“ZLib 档案”之类的东西。你是说拉链吗? gz? tar.gz?
  • 如果你能说服我,这将对我的项目产生重大影响。该文件是在 Delphi 中使用默认 ZLib 压缩创建的专有文件格式。它有一个 ZLib 标头,跳过标头允许使用 DeflateStream 解压缩顶级文件。这就是我所得到的。我尝试的所有其他操作都会导致实施出错。
  • @KimSchneider ZipArchive

标签: c# zip archive zlib dotnetzip


【解决方案1】:

这应该可行:

using (ZipFile zip = ZipFile.Read(ExistingZipFile))
{
   foreach (ZipEntry e in zip)
   {
      e.Extract(TargetDirectory, true);  // overwrite existing files
   }
}

【讨论】:

  • 我什至无法编译它。该代码是否使用System.IO.Compression namespaceIonic.ZLibIonic.Zip
  • ZipFile 类在 System.IO.Compression 命名空间中声明。它需要框架的 v4.5。 msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多