.net core使用SharpZipLib压缩zip文件并设置密码

📅 2026/7/23 11:35:46 👁️ 阅读次数 📝 编程学习
.net core使用SharpZipLib压缩zip文件并设置密码
nuget安装SharpZipLib
/// <summary>
/// 压缩zip并设置密码
/// </summary>
/// <param name="sourceDir">要压缩的目录</param>
/// <param name="zipFile">压缩后zip存放地址</param>
/// <param name="password">密码</param>
public static void CreateZipPwd(string sourceDir, string zipFile, string password)
{if (File.Exists(zipFile)) File.Delete(zipFile);using (FileStream fs = new FileStream(zipFile, FileMode.Create))using (ZipOutputStream zipOut = new ZipOutputStream(fs)){zipOut.Password = password;zipOut.UseZip64 = UseZip64.On;zipOut.SetLevel(Deflater.DEFAULT_COMPRESSION);AddDirectoryToZip(zipOut, sourceDir, sourceDir);}
}
private static void AddDirectoryToZip(ZipOutputStream zipOut, string currentDir, string rootDir)
{foreach (string file in Directory.GetFiles(currentDir)){FileInfo fi = new FileInfo(file);string relPath = Path.GetRelativePath(rootDir, file).Replace("\\", "/");ZipEntry entry = new ZipEntry(relPath);entry.DateTime = fi.LastWriteTime;entry.Size = fi.Length;zipOut.PutNextEntry(entry);using (FileStream fs = fi.OpenRead())fs.CopyTo(zipOut);zipOut.CloseEntry();}foreach (string dir in Directory.GetDirectories(currentDir))AddDirectoryToZip(zipOut, dir, rootDir);
}

demo

 string sourceDir = "E:\\2026";string zipFile = "E:\\2026-01.zip";string password = "123456";CreateZipPwd(sourceDir, zipFile, password);