2009-01-16 99 views
16

我有一個程序(用C#編寫)直接讀取/寫入數據(無需服務器的直接文件訪問)到firebird數據庫文件。爲了更好的交換,我希望(不)壓縮它們的導入/導出,以便在互聯網上進行更好的交換,而無需外部程序對其進行壓縮。C#免費壓縮庫,支持7zip(LZMA)

我知道#ziplib它支持Zip,GZip,Tar和BZip2。

還有什麼免費的C#壓縮庫知道嗎? 有沒有支持LZMA的.NET庫,所以我可以讀/寫「.7z」文件?

回答

20

這是一個很好的文章由彼得·布朗伯格寫:

7Zip (LZMA) In-Memory Compression with C#

顯示一個簡單的C# SevenZip.Compression.Lzma.SevenZipHelper 類使高壓縮的 使用C#的內存中對象。添加新的 7Zip格式LZMA Cookie壓縮 類到先前發佈的 CookieCompression實用程序。

24

7-ZIP有一個免費的源代碼,爲LZMA算法公共領域的C#SDK:

http://www.7-zip.org/sdk.html

+9

這可能是值得指出的是,它是免費的源代碼,公共領域,並在C#:) – 2009-01-16 10:30:17

+1

@喬恩飛碟雙向:您正確的。添加了這些信息。 – 2009-01-16 10:34:08

4

這似乎是相當一個鮮爲人知的事實,但.NET庫包括packaging/compression API

+0

下面是使用該API的示例: http://www.syntaxwarriors.com/2012/zip-files-using-c-net-without-any-extra-libraries/ – JensB 2012-09-23 17:00:45

+0

這是MS特定的嗎? Nowaways我不想再使用純MS解決方案。我的意思是如果我打包一個文件,我希望它也可以在非MS機器上使用。 – tmighty 2014-03-13 14:39:43

1

如果你正在編寫單獨的文件,那麼你可以只把它當作一個流,並使用內置GZipStream/DeflateStream(雖然在我做的一些測試中,#ZipLib在比例和速度方面都超出了MS提供的)。或者在框架的某個地方有內置的zip支持。不過,我不知道LZMA。

-3

當心:GZipStream具有的4Gb的大小限制