2010-05-10 73 views
7

是的,我知道GZipStream或DeflateStream是處理壓縮/解壓縮的.NET Framework中常見的。最好的.NET Framework壓縮類?

我希望有壓縮/在我的程序解壓縮功能,但

  1. 我想一個.NET Framework C#1,而不是第三方的開源。由於我程序中的版權限制,我無法使用。

  2. GZipStream和DeflateStream不太好。例如,GZipStream將文件壓縮到480KB,而7Zip將同一文件壓縮到57KB的大小。

Microsoft是否有其他好的壓縮方法?

由於

+0

感謝您的回覆。 我可以問DeflateStream是否使用霍夫曼編碼? – Jack 2010-05-10 14:09:37

+0

'DeflateStream'和'GZipStream'都使用了LZ77算法和Huffman編碼的組合(請參閱http://msdn.microsoft.com/zh-cn/library/system.io.compression.gzipstream.aspx和http: /msdn.microsoft.com/en-us/library/system.io.compression.deflatestream.aspx)。 'Deflate'是純粹的壓縮算法,而'GZipStream'包含CRC校驗和,*可以通過編寫不同的壓縮算法來擴展(目前.net框架只是實現了一種壓縮算法)。 – 2010-05-10 14:54:13

回答

5

GZipStream和DeflateStream被專門用於壓縮,用於存儲文件的未壓縮一般。

除了這些類以外,壓縮還沒有內置到.NET中。如果你想要高質量的壓縮,你將不得不去第三方庫。查看http://www.7-zip.org/sdk.html獲取開源7zip庫。

+0

該網頁指出「LZMA SDK被放置在公共領域」,這應該意味着它可以自由使用,不過你喜歡,不是嗎? – 2010-05-10 13:45:21

+0

Dave把它放在了正確的方向,但Stefan給出了準備使用.zip實現7zip算法(這是lzma)的鏈接。 – Oliver 2010-05-10 13:57:47

+0

絕對免費。 OP說他不想要「第三方開源」。如果成本不是問題,我不確定是什麼。 – 2010-05-10 13:59:11

1

我沒有任何有關壓縮率的統計數據,但我多年來一直在使用SharpZipLib庫,並取得了很大的成功。

2

有一個7zip的託管包裝。許可證是LGPL,因此您可以在封閉的源項目中使用它。我不知道這是否符合您的許可證要求,因爲您沒有聲明它們。

http://sevenzipsharp.codeplex.com/

0

你也可以的PInvoke使用開源的ZLib(http://www.zlib.net/),或使用它的包裝(我用zlib.net - http://www.componentace.com/zlib_.NET.htm - 但我相信它有一些錯誤)。 它比託管庫不太方便,但比DeflateStream/GZipStream更有效(除了GZipStream中額外的CRC之外,它們是相同的)。