微软引入了对ZIP文件处理在.NET 4.5中的改进System.IO.Compression命名空间。 即类ZipArchive和ZipFile的 。 但是,我还没有见过的方式使用本地.NET ZIP文件处理密码保护的文件。 有没有一种方法来实现这一目标? (据我所知,有相当不错的第三方zip文件库,这不是问题。)
Answer 1:
不幸的是没有。 有密码保护的zip文件.Net框架4.5中不支持。 在这种情况下,你必须切换到著名的第三方库之一。
Answer 2:
正如指出的那样, DotNetZip是你的朋友。 开箱取出压缩文件一样简单
using ( ZipFile archive = new ZipFile( @"c:\path\to\your\password\protected\archive.zip",) )
{
archive.Password = "your-pass-word-here" ;
archive.Encryption = EncryptionAlgorithm.PkzipWeak ; // the default: you might need to select the proper value here
archive.StatusMessageTextWriter = Console.Out;
archive.ExtractAll( @"c:\path\to\unzip\directory\", ExtractExistingFileAction.Throw ) ;
}
根据我的经验,DotNetZip跑一样快了Info-ZIP的开源解压缩工具,并使用大致相同的内存量。
编辑要注意:DotNetZip用来住在Codeplex上。 Codeplex上已关闭。 旧存档仍然可以在Codeplex上 。 它看起来像代码迁移到Github上:
- https://github.com/DinoChiesa/DotNetZip 。 看起来是原作者的回购。
- https://github.com/haf/DotNetZip.Semverd 。 这看起来是当前维护版本。 它也是通过在的NuGet打包可用https://www.nuget.org/packages/DotNetZip/
Answer 3:
离子的方法是真棒。 我尝试过其他三种方法,它是迄今为止最好的。 不要浪费时间,只是使用它。
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
支持密码加密,以及其他压缩选项。
Answer 4:
在看的方法由4.5框架提供没有允许与ZIP文件的密码的方法。 至于你的问题中提到的第三方将是你最好的选择。
Answer 5:
似乎没有要在本地.NET 4.5库密码保护的zip文件,类似于如何,似乎没有要在Windows资源管理器的支持,甚至与Windows 10的任何支持! 有些人报告说,他们必须使用第三方DotNetLib拉链损坏的问题,所以一定要进行广泛的测试,如果你走这条路,或者尝试SharpZipLib代替。
文章来源: Decompressing password-protected ZIP files with .NET 4.5