.NET Framework 与 Zip 文件格式间总是存在着一种不可思议的关系。在一开始,.NET 提供了对 Zip 文件的支持,但其实现方式却是大多数人都没有意识到的。很久之前被抛弃的 J#编程语言包含了 Java 的 java.util.zip 包。在 2003 年 Ianier Munoz 发表的一篇文章中介绍了如何在C#中使用J# Zip 库。
.NET 2.0 在这个问题上则出现了明显的倒退。那时,J#已经被开发者社区所遗忘,提供给我们的则是几乎毫无用处的IO.Compression 命名空间。 DeflateStream 与 GZipStream 类只提供了单向、基于流的压缩。此外,他们还缺乏处理与多种文件档案如 Zip 相关的元数据的能力。
2006 年,微软通过 ZipPackage 类提供了一个异常笨拙的处理Zip 文件的API 。创建该API 的主要目的在于支持 Open XML Paper Specification (XPS)。XPS 最初被看作是与 Adobe PDF 文件格式进行直接竞争的一个尝试,但后来这些努力还是被放弃了。如今的 XPS 主要用于 Windows 的假脱机打印,用于替换基于 GDI 的 WinPrint(如果打印机支持的话)。
对于.NET 4.5 来说,我们终于看到了一个值得期待的用于处理 Zip 文件的内建 API。虽然现在谈论 ZipArchive 类是否是 DotNetZip 等库的竞争者还为时尚早,但它至少向那些由于许可问题而无法使用开源库的开发者提供了一些可用的东西。Tugberk Ugurlu 研究并介绍了如何使用.NET 4.5 中的ZipArchive 。
查看英文原文: Microsoft .NET Finally Offers a General Purpose Zip Library
评论