26

有谁知道一个好的.NET 开源压缩库?

4

5 回答 5

35

SharpZipLib

关于内部gzip实现的评论和其他帖子,它们是一样的!GZip 不会创建归档所需的标头;它仅对“压缩”一个文件或流有用。

正确的 zip 存档包含一个标题,其中列出了所有压缩文件以及它们在压缩数据中的位置,因此您需要制作标题的东西。这意味着 SharpZipLib,是众多商业版本之一,或者使用带有 .NET 绑定的外部软件,如 7zip。

只是偶然有人想说:“但我一直.gz在 Linux 中看到文件!” - 它们只是单个文件,.tar.gz也不例外 - tar 是存档文件。那.gz就是压缩的存档。

于 2008-12-17T12:31:27.220 回答
25

情侣评论。

  1. 不要使用 J# 运行时。J# 已被 Microsoft 停止使用。未来的支持值得怀疑。此外,当您想要的只是 ZIP 支持时,整个 J# 运行时是一个大难题。
  2. System.IO.Compression 中的 GzipStream 是自 .NET 2.0 以来的 .NET 基类库的一部分,它为IETF RFC-1952压缩提供了流接口。压缩是可以的,虽然压缩比不是最优的,它会显着扩展之前压缩过的数据。此错误已报告给 Microsoft,但显然已关闭。还有一个 DeflateStream 类似,但适用于RFC 1951。有一个常见的误解是 GZipStream 会压缩文件。不对。 这两个都没有压缩文件。
  3. 有 System.IO.Packaging.ZipPackage。它可以工作,但主要用于打包 MS Office 2007(.docx、.xslx 和 .pptx)文件。它对于 zip 文件很笨拙,并且不支持很多 ZIP 功能,例如加密。
  4. 如果您想以灵活的方式在 .NET 中创建和读取 zip 文件,目前您需要一个第三方库。

DotNetZip是一个很好的第 3 方选项。免费、开源、积极维护、使用简单、体积小、功能集好。它作为单个程序集交付 - 它是完全托管的代码。适用于 Compact Framework 以及常规 .NET Framework。先决条件是 .NET 2.0。

DotNetZip 还包括一个 ZLIB 库,其中包含 {Zlib,GZip,Deflate}Stream 等类。它们与 .NET 的内置类相当,但它们包括设置压缩级别的能力,并且在更高级别上,它们比内置类更有效地压缩。ZlibStream 执行RFC 1950压缩。

DotNetZip 支持 ZIP64、密码、AES 加密、流、SFX 和 Unicode。每个使用它的人都说它比 SharpZipLib 使用起来简单得多。有一个很好的帮助文件 (.chm) 和很多代码示例。

DNZ CHM

于 2009-01-04T03:27:15.687 回答
12

DotNet Zip 库 (Ionic.Zip.dll) 非常易于使用。我觉得它比 SharpZip 更容易实现。

http://www.codeplex.com/DotNetZip

于 2008-12-17T14:58:21.980 回答
9

尝试签出7-zip。它是开源的,也是我最喜欢的 zip 程序。非常kewl。也利用了多核。

.NET SDK 可在此处获得。

于 2008-12-17T12:31:51.043 回答
9

**** 但是伙计们 .NET 已经支持开源 zip....****

http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

这与 GZIP 库兼容。我用它来压缩 C# 数据并在 C++ 应用程序中跨网络解压缩。工作正常。

托尼

于 2008-12-17T12:46:06.363 回答