C# 解压缩ZIP文件
void Main() { var files = ExtractZip(@"云阅卷V5.0.4.1_Alpha_20201015.zip",@"程序包/firstelite/publish/OMS",@"E:\Desktop\test"); files.Count.Dump(); files.Dump(); } List<string> ExtractZip(string zipFilePath, string relativePath, string destPath) { var result = new List<string>(); relativePath = relativePath.Replace(@"\",@"/"); using (FileStream zipToOpen = new FileStream(zipFilePath, FileMode.Open)) { using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read)) { var entry = archive.Entries.FirstOrDefault(x=>x.FullName.ToUpper() == relativePath.ToUpper()); if(entry == null) entry = archive.Entries.FirstOrDefault(x => x.FullName.ToUpper() == (relativePath + "/").ToUpper()); if (!string.IsNullOrWhiteSpace(entry.Name)) { var path = Path.Combine(destPath,entry.Name); using (var file = new FileStream(path, FileMode.Create, FileAccess.Write)) { entry.Open().CopyTo(file); file.Close(); } result.Add(path); } else { var items = archive.Entries.Where(x => x.FullName.StartsWith(entry.FullName)).ToList(); foreach (var item in items.Where(x => string.IsNullOrWhiteSpace(x.Name)).OrderBy(x => x.Length)) { var path = Path.Combine(destPath, item.FullName.Substring(entry.FullName.Length)); if (!Directory.Exists(path)) Directory.CreateDirectory(path); } foreach (var item in items.Where(x => !string.IsNullOrWhiteSpace(x.Name)).OrderBy(x => x.Length)) { var path = new FileInfo( Path.Combine(destPath, item.FullName.Substring(entry.FullName.Length))).Directory.FullName; path = Path.Combine(path, item.Name); using (var file = new FileStream(path, FileMode.Create, FileAccess.Write)) { item.Open().CopyTo(file); file.Close(); } result.Add(path); } } } } return result; } // Define other methods and classes here
写入zip
var files = new Dictionary<string, byte[]>(); var utf8WithBom = new UTF8Encoding(true); var classPlanResult = string.Empty; using (var db = new DATAEntities()) { db.Database.CommandTimeout = 3600; var classPlanID = this.CurrentClassPlanID; var classPlan = db.ClassPlan.FirstOrDefault(item => item.ID == classPlanID); classPlanResult = classPlan.FixedFormalDivideResult; } files.Add("教学班分班规划参数1.json", utf8WithBom.GetBytes(classPlanResult)); var json = generateNonadministraviePredictClassPlanParameter(chkLessonHourOptimize1.Checked); files.Add("教学班分班规划参数2.json", utf8WithBom.GetBytes(json)); using (var ms = new MemoryStream()) { using (var zip = new ZipArchive(ms, ZipArchiveMode.Create,true)) { foreach (var file in files) { var item = zip.CreateEntry(file.Key); using (var s = item.Open()) { s.Write(file.Value, 0, file.Value.Length); } } } renderDownloadFile("教学班分班规划传入参数.zip", ms); }
桂棹兮兰桨,击空明兮溯流光。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2017-11-10 asp.net IE11 dopostback is null or undefined 为空或未定义
2015-11-10 asp.net httpmodule 访问页面控件 备忘