如何使用.NET ZipArchive和ZipArchiveEntry类来提取带有PASSWORD的文件

时间:2012-10-15 15:51:19

标签: c# .net passwords ziparchive

我使用以下代码提取zip文件的内容:

using(ZipArchive zipArchive = new ZipArchive(memoryStream))
{
    foreach (ZipArchiveEntry entry in zipArchive.Entries)
    {
        entry.ExtractToFile("extract.txt");
    }
}

这适用于那些没有密码保护的zip文件,但是,我还需要它来处理那些受密码保护的密码。

我已经看过其他样本可以使用其他类或其他代码实现我想要的但我发现这种方式非常干净,我希望有一个属性,我可以设置密码(它不应该需要比那更困难。)

提前致谢。

1 个答案:

答案 0 :(得分:3)

正如Oded所说,内置类不支持密码。您应该尝试使用DotNetZip之类的外部库。它是免费的,功能强大的,并且支持您所需要的一切。

在这种情况下,您的示例是:

 using (ZipFile zip = ZipFile.Read(ExistingZipFile))
  {
    ZipEntry e = zip["TaxInformation-2008.xls"];
    e.ExtractWithPassword(BaseDirectory, Password);
  }