• 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);
                }
  • 相关阅读:
    Ubuntu下访问Windows中Postgresql
    Ubuntu下访问Windows中Postgresql
    “大家好,我是渣渣辉”这款油腻游戏的背后是90后老板和10亿现金流
    ID 选择器
    getElementById
    遇见未来 | 超融合如何兼顾企业的“敏态”和“稳态”的业务需求
    赏完超级蓝血月,再来品味这10个与月亮有关的创业项目
    CSS选择器
    jquery dom操作
    getElementById
  • 原文地址:https://www.cnblogs.com/nanfei/p/13952761.html
Copyright © 2020-2023  润新知