使用 System.IO.Packaging 在 c# 中解压缩 zip 文件

Posted

技术标签:

【中文标题】使用 System.IO.Packaging 在 c# 中解压缩 zip 文件【英文标题】:Unpacking zip file in c# using System.IO.Packaging 【发布时间】:2011-06-28 09:09:30 【问题描述】:

我想使用 System.IO.Packaging 命名空间在 c# 中解压缩文件。我知道有一个 zip 库,但我宁愿先探索是否可以在不添加额外依赖项的情况下实现相同的目标。

这是我的代码:

using (var fs = new FileStream(fn1, FileMode.Open)) 
    using (var p = Package.Open(fs)) 
        Console.WriteLine(p.GetRelationships().Count());
        Console.WriteLine(p.GetParts().Count());
    

Console.Read();

使用我找到的任何 zip 文件,我得到 0 个关系和 0 个部分。我做错了什么?

【问题讨论】:

ZipPackage 确实无法处理任意 zip 存档。我相信这就是为什么这个类被称为ZipPackage 而不是ZipArchive 的原因。可能我们将在框架的某个未来版本中使用适当的ZipArchive 实现,因为 BCL 团队实际上是在一段时间前worked on the API。 【参考方案1】:

显然,尽管所有 System.IO.Packaging 文件都是 zip 文件,但并非所有 zip 文件都符合 System.IO.Packaging。因此,它对于解压缩 zip 文件是无用的。

【讨论】:

我不会走那么远。它的用处是有限的。

以上是关于使用 System.IO.Packaging 在 c# 中解压缩 zip 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 System.IO.Packaging 生成 ZIP 文件

使用 System.IO.Packaging 在 c# 中创建 zip

System.IO.Packaging无法使用,需引用WindowsBase.dll

在 c# 中使用 System.IO.Packaging 对 .xlsx 文件进行数字签名

从不可搜索的流中打开 System.IO.Packaging.Package

开放包装约定/ System.IO.Packaging 教程 [关闭]