不幸的是,框架中没有这样的功能。有一种方法可以制作 ZIP 文件,但不需要密码。如果您想在 C# 中创建受密码保护的 ZIP 文件,我推荐SevenZipSharp。它基本上是 7-Zip 的托管包装。
SevenZipBase.SetLibraryPath(Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? Environment.CurrentDirectory,
"7za.dll"));
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.Compressing += Compressor_Compressing;
compressor.FileCompressionStarted += Compressor_FileCompressionStarted;
compressor.CompressionFinished += Compressor_CompressionFinished;
string password = @"whatever";
string destinationFile = @"C:\Temp\whatever.zip";
string[] sourceFiles = Directory.GetFiles(@"C:\Temp\YourFiles\");
if (String.IsNullOrWhiteSpace(password))
{
compressor.CompressFiles(destinationFile, sourceFiles);
}
else
{
//optional
compressor.EncryptHeaders = true;
compressor.CompressFilesEncrypted(destinationFile, password, sourceFiles);
}
Run Code Online (Sandbox Code Playgroud)
DotNetZip以干净的方式工作得很好。
DotNetZip is a FAST, FREE class library and toolset for manipulating zip files.
Run Code Online (Sandbox Code Playgroud)
代码
static void Main(string[] args)
{
using (ZipFile zip = new ZipFile())
{
zip.Password = "mypassword";
zip.AddDirectory(@"C:\Test\Report_CCLF5\");
zip.Save(@"C:\Test\Report_CCLF5_PartB.zip");
}
}
Run Code Online (Sandbox Code Playgroud)