【问题标题】:decompress deflate64 [closed]解压缩 deflate64 [关闭]
【发布时间】:2011-03-18 07:25:42
【问题描述】:

我有一个来自数据库的压缩字节字符串,我需要对其进行解压缩,以便在其中检索 rtf 文件。这是要求。

我尝试使用 DotNetZip,它给了我 50% 的成功率。失败的 50% 给了我一个不受支持的加密 (0x09, deflate64) 错误。所以我认为我的问题是一些压缩字符串是使用 deflate64 压缩的,而另一些则不是。不知道为什么。

我发现 zlib、DeflateStream 和很多免费包都不支持 deflate64。 SevenZipSharp 和 KarnaCompression(Info-zip 到 C# 的端口)声称支持它,但是我在使用这两个库时不断出错。

SevenZipSharp 给了我一个谷歌没有答案的“数据错误”异常,而 KarnaCompression 给了我一些随机异常“试图加载格式不正确的程序”,我无法追溯到 KarnaCompression。

有没有人有一个使用库解压缩 deflate64 编码文件的工作示例? 或者可以告诉我如何证明我的 zip 不是 deflate64 编码文件和其他东西?

支付 700 美元购买 Xceed 许可证是最后的选择。

【问题讨论】:

  • 在您购买 Xceed 许可证之前,您是否使用过他们的试用版来检查您是否可以解压所有内容,或者这是否也会导致 50% 的比率?
  • 您是否尝试将数据库中的字节写入文件并使用某些工具(7zip、winrar 等)解压缩它们以检查是否可以使用其他工具读取它们以确保内容真的有效吗?
  • 为了回答您的第二个问题,我已将流写入一个文件并能够使用 WinRAR 打开它。我会尽快回答你的第一个问题:)

标签: c# deflate compression dotnetzip


【解决方案1】:

我遇到了类似的问题。

我的问题是我试图从 64 位 exe 调用 unzip32.dll。

检查一下: 32 bit dll importing in 64 bit .Net application

【讨论】:

  • 你在说什么? unzip32.dll 是什么?你说得对,我是在 64 位系统上开发的。
  • 我使用的是 Info-ZIP 的 UnZip DLL,但我确信每个 zip 库都是一样的。
  • 我终于用 SevenZipSharp 解决了这个问题。 KarnaCompression 的 Info-ZIP 包装不允许提取仅流式传输文件。您正确指出的问题是我在我的 64 位应用程序(基于任何 CPU)上使用 32 位版本。感谢您的提示。
【解决方案2】:

SevenSharpZip 只是原生 7zip dll 的包装器。我更喜欢 SharpZipLib 作为纯 .NET 压缩解决方案,但它不支持 Deflate64。我在添加支持方面很擅长,但我不熟悉他们的 ZIP 实现。有一个标准,但不同的实现是如此不同。我最终使用了 SevenSharpZip,但最近确实遇到了一个错误 - 我正在添加在运行操作之前备份存档的功能,我向其他人推荐了这一功能。

【讨论】:

    猜你喜欢
    • 2016-03-21
    • 2010-11-04
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2013-04-27
    相关资源
    最近更新 更多