2010-07-20 128 views
3

我有一个压缩的字节串出来的数据库,我需要解压缩,以检索那里的rtf文件。这是要求。解压缩deflate64

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

我发现zlib,DeflateStream和相当多的免费软件包不支持deflate64。 SevenZipSharp和KarnaCompression(C#的Info-zip的端口)声称支持它,但我不断收到使用这两个库的错误。

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

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

为Xceed许可证支付700美元是最后一种选择。

+0

在您购买Xceed许可证之前,您是否使用过他们的试用版来检查是否可以解压所有内容,或者这也会导致50%的费率? – Oliver 2010-07-20 08:11:28

+0

您是否尝试将数据库中的字节写入文件并使用某些工具(7zip,winrar等)对其进行解压缩,以检查是否可以用其他方法读取它们以确保内容真正有效? – Oliver 2010-07-20 08:13:12

+1

要回答您的第二个查询,我已将流写入文件并能够使用WinRAR打开它。 我会尽快回答你的第一个问题:) – Joe 2010-07-20 08:20:36

回答

3

我有类似的问题。

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

检查了这一点: 32 bit dll importing in 64 bit .Net application

+0

你在说什么?什么是unzip32.dll? 你是对的,我正在开发一个64位系统。 – Joe 2010-07-22 00:56:39

+0

我使用的是Info-ZIP的UnZip DLL,但我确信它对于每个zip库都是一样的。 – robbie 2010-07-22 01:12:58

+0

我终于用SevenZipSharp解决了这个问题。 KarnaCompression对Info-ZIP的封装不允许提取流式传输文件。 您正确地指出的问题是我在64位应用程序(基于任何CPU)上使用32位版本。 感谢您的提示。 – Joe 2010-07-22 06:46:27

0

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