用c#写一个创建有密码的zip压缩文件
时间: 2024-09-24 13:28:36 浏览: 28
在C#中,你可以使用`System.IO.Compression.ZipFile`类来创建包含密码保护的ZIP文件。以下是一个简单的示例,展示了如何创建一个带密码的ZIP文件:
```csharp
using System;
using System.IO;
using System.IO.Compression;
class Program
{
static void Main(string[] args)
{
string sourceDirectory = "C:\\SourceFolder";
string destinationZip = "C:\\Destination.zip";
string password = "YourPassword"; // 设置你的密码
CreateEncryptedZip(sourceDirectory, destinationZip, password);
Console.WriteLine("ZIP file created with password.");
Console.ReadKey();
}
static void CreateEncryptedZip(string source, string zipPath, string password)
{
using (FileStream archive = new FileStream(zipPath, FileMode.Create))
{
ZipArchive archiveObj = new ZipArchive(archive, ZipArchiveMode.Create, true); // 使用True表示加密
// 获取源目录下的所有文件和子目录
var sourceEntries = Directory.GetFiles(source)
.Concat(Directory.GetDirectories(source).SelectMany(dir => Directory.GetFiles(dir)));
foreach (string entry in sourceEntries)
{
string entryName = Path.GetFileName(entry);
// 创建并添加压缩文件条目
ZipArchiveEntry zipEntry = archiveObj.CreateEntry(entryName, CompressionLevel.Optimal);
using (FileStream fs = new FileStream(entry, FileMode.Open))
{
fs.CopyTo(zipEntry.Open());
}
// 对每个文件设置密码
zipEntry.IsEncrypted = true;
zipEntry.SetAttributes(FileAttributes.Archive);
zipEntry.Password = password; // 设置加密密码
}
}
}
}
```
在这个例子中,你需要替换`sourceDirectory`和`destinationZip`为你实际的源目录路径和目标ZIP文件路径。当你运行这个程序时,它会创建一个名为`Destination.zip`的新ZIP文件,并对其中的所有内容进行加密。