zoukankan      html  css  js  c++  java
  • C# 解压缩ZIP文件

    void Main()
    {    
        var files = ExtractZip(@"云阅卷V5.0.4.1_Alpha_20201015.zip",@"程序包/firstelite/publish/OMS",@"E:Desktop	est");
        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);
                }
  • 相关阅读:
    浅谈双连通分量、强连通分量
    第四届 山东省ACM大学生程序设计竞赛
    第四届 山东省ACM Rescue The Princess(计算几何)
    light oj 1138
    hdoj 2767 Proving Equivalences【求scc&&缩点】【求最少添加多少条边使这个图成为一个scc】
    hdoj 3836 Equivalent Sets【scc&&缩点】【求最少加多少条边使图强连通】
    hdoj 3072 Intelligence System【求scc&&缩点】【求连通所有scc的最小花费】
    hdoj 1827 Summer Holiday【强连通分量&&缩点】
    hdoj 1269 迷宫城堡【scc基础题目】
    light oj 1019【最短路模板】
  • 原文地址:https://www.cnblogs.com/nanfei/p/13952761.html
Copyright © 2011-2022 走看看