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);
