当前位置:  开发笔记 > 编程语言 > 正文

如何使用System.IO.Compression读取/写入ZIP文件?

如何解决《如何使用System.IO.Compression读取/写入ZIP文件?》经验,为你挑选了4个好方法。

我知道有用于处理ZIP文件的库.而且,您也可以使用Windows内置的功能来处理ZIP文件.

但是,我想知道是否有人研究过如何使用.NET中的System.IO.Compression命名空间内置的工具来读取/写入ZIP文件?或者,是否仅使用此命名空间是不可能的?

更新:我似乎有人评论System.IO.Packaging命名空间也可能对此有用.有谁知道到底该怎么做?



1> Dave Moore..:

MSDN有一个完整的示例 http://msdn.microsoft.com/en-us/library/system.io.packaging.zippackage.aspx使用ZipPackage类.需要.NET 3.5.


实际上,`System.IO.Packaging`命名空间包含用于处理Open Packaging样式包的类.您可以使用它来创建ZIP文件(如果您不关心将包含在ZIP中的一些额外文件),但它不能用于打开*any*zip文件.有关详细信息,请参阅[ZipPackage类文档的底部](http://msdn.microsoft.com/en-us/library/system.io.packaging.zippackage(v = vs.85).aspx)(此社区不是出现在.NET 4.0 doc中,但仍然有效).

2> Chris Pietsc..:

戴夫,非常好!我不知道那是在那里.

现在,我知道要查找什么,我能够找到一篇文章,其中包含如何使用它的小代码示例:http: //weblogs.asp.net/jgalloway/archive/2007/10/25/creating-zip -archives-在净而不-AN-外部库样sharpziplib.aspx

在相关的说明中,我还发现了看起来非常容易使用的DotNetZip项目.



3> Cheeso..:

您将需要使用第三方库,例如http://www.codeplex.com/DotNetZip,而不是尝试使用GZipStream或DeflateStream来读取zip文件.

.NET中的***Stream类可以让您读取或写入压缩的字节流.这些类不读取或写入zip文件.zip文件是由"信封"或标题包围的压缩数据.可以把它想象成元数据 - 它包括文件名,时间戳,CRC和一堆其他东西.**Stream类仅生成压缩数据流,并且不知道如何生成或使用元数据,这在PKWare维护的PKZip格式规范中有所描述.

像DotNetZip这样的第三方库处理ZIP存档中的元数据.它们可能会也可能不会使用System.IO.Compression.DeflateStream()类来生成压缩的字节流.例如,在以前的版本中,DotNetZip使用了内置的DeflateStream.从v1.7开始,DotNetZip包含自己的DeflateStream,它比.NET Framework中提供的更有效.作为一个额外的好处,DotNetZip中的嵌入式DeflateStream允许在.NET Compact Framework 2.0上使用DotNetZip,它缺少System.IO.Compression.DeflateStream.(它是在Compact Framework 3.5中添加的)

如果您有更多问题,可以在DotNetZip网站上找到一个很好的论坛.示例C#代码:

    try
    {
        using (ZipFile zip = new ZipFile())
        {
            zip.AddDirectory(DirectoryToZip); // recurses subdirs
            zip.Save(Filename);
        }
    }
    catch (System.Exception ex1)
    {
        System.Console.Error.WriteLine("exception: " + ex1);
    }



4> Christopher ..:

从.NET 4.5开始,Microsoft已将ZipArchive类提供给System.IO.Compression命名空间.与该命名空间中的其他类不同,但是,如同GZipStreamDeflate流,则ZipArchive 需要对System.IO.Compression.dll程序集的引用.

它使用起来相当简单,MSDN上面的链接提供了一些很好的例子.

此外,Microsoft还创建了Microsoft Compression NuGet包,它ZipArchive为Windows Phone 8和其他可移植类库添加了对相关类的支持.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有