首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用System.IO.Compression读写ZIP文件?

如何使用System.IO.Compression读写ZIP文件?
EN

Stack Overflow用户
提问于 2008-10-08 18:56:17
回答 8查看 91.2K关注 0票数 20

我知道有libraries out there for working with ZIP files。此外,您还可以选择use the functionality built into Windows for working ZIP files

但是,我想知道是否有人想出了如何在.NET中使用内置到System.IO.Compression名称空间中的工具来读/写ZIP文件?或者,不能只使用这个名称空间吗?

更新:我似乎有人评论说,System.IO.Packaging名称空间可能对此也很有用。有没有人知道该怎么做?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-10-08 19:04:05

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

票数 17
EN

Stack Overflow用户

发布于 2008-10-08 19:13:07

戴夫,太棒了!我不知道里面有这个。

现在我知道要查找什么了,我找到了一篇文章,其中包含一个关于如何使用它的小代码示例:http://weblogs.asp.net/jgalloway/archive/2007/10/25/creating-zip-archives-in-net-without-an-external-library-like-sharpziplib.aspx

在相关的注释中,我还发现DotNetZip project看起来非常容易使用。

票数 7
EN

Stack Overflow用户

发布于 2009-01-04 03:41:37

您将希望使用第三方库,如http://www.codeplex.com/DotNetZip,而不是尝试使用GZipStream或DeflateStream读取压缩文件。

.NET中的*Stream类可以让您读取或写入压缩的字节流。这些类不读或写zip文件。zip文件是由“信封”或报头包围的压缩数据。可以把它看作是元数据--它包括文件名、时间戳、CRC和其他一堆东西。**Stream类只产生压缩数据流,不知道如何产生或消费元数据,这在PKWare维护的PKZip格式规范中有描述。

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

如果你有更多的问题,在DotNetZip网站上有一个很好的论坛。示例C#代码:

代码语言:javascript
复制
    try
    {
        using (ZipFile zip = new ZipFile())
        {
            zip.AddDirectory(DirectoryToZip); // recurses subdirs
            zip.Save(Filename);
        }
    }
    catch (System.Exception ex1)
    {
        System.Console.Error.WriteLine("exception: " + ex1);
    }
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/184309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档