2010-07-20 157 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,但是最近我遇到了一個錯誤 - 我添加了在運行操作之前備份存檔的功能,我推薦給其他人。