2009-01-16 100 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的大小限制