依赖:.NET Framework 4.5及以上,引用 - 添加引用 - 程序集
System.IO.Compression
System.IO.Compression.FileSystem
针对文件夹的最简单的压缩与解压缩
1、目录必须存在
2、无法覆盖文件
public static void DoZipFile(List<string> AllFiles, string FileDir, string OutputDir) { if (!Regex.IsMatch(FileDir, @".*[/\\]$")) { FileDir += "\\"; } using (FileStream fs = new FileStream(OutputDir, FileMode.Create)) { using (ZipArchive ar = new ZipArchive(fs, ZipArchiveMode.Create)) { foreach (string file in AllFiles) { FileInfo info = new FileInfo(file); if(!new DirectoryInfo(FileDir).FullName.StartsWith(info.Directory.FullName)) { throw new Exception("Compress file must exist in the specific directory"); } ar.CreateEntryFromFile(info.FullName, info.FullName.Substring(FileDir.Length)); } } } } public static void UnZipFile(string ZipFile, string OutputPath) { if (!Regex.IsMatch(OutputPath, @".*[/\\]$")) { OutputPath += "\\"; } using (FileStream fs = new FileStream(ZipFile, FileMode.Open)) { using (ZipArchive zr = new ZipArchive(fs)) { foreach (var en in zr.Entries) { FileInfo path = new FileInfo(OutputPath + en.FullName); if(!path.Directory.Exists) { path.Directory.Create(); } if(en.Name == "") //是文件夹 { Directory.CreateDirectory(OutputPath + en.FullName); } else { en.ExtractToFile(OutputPath + en.FullName, true); } } } } }
标签:解压,en,string,C#,压缩,OutputPath,FileDir,new,FullName From: https://www.cnblogs.com/wuguoqiang/p/17282458.html