首页 > 编程语言 >C# 压缩与解压操作

C# 压缩与解压操作

时间:2023-04-03 11:00:55浏览次数:29  
标签:解压 en string C# 压缩 OutputPath FileDir new FullName

依赖:.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

相关文章

  • 【妙用WebView】鸿蒙元服务中如何使用Java Script的API创建地图
    【关键字】webview地图高德腾讯地图百度地图 【问题背景】开发元服务过程中需要用到地图能力:卡片中显示我的快递位置和我的位置信息;PageAbility中可以打开自定义地图,查询POI点,做路径规划、路径推荐等;查看了高德、百度、华为、腾信地图的后发现,各大厂商对鸿蒙系统的支持能......
  • 奇异值分解(SVD)和图像压缩
    在本文中,我将尝试解释SVD背后的数学及其几何意义,还有它在数据科学中的最常见的用法,图像压缩。奇异值分解是一种常见的线性代数技术,可以将任意形状的矩阵分解成三个部分的乘积:U、S、V。原矩阵A可以表示为:具体来说,A矩阵中的奇异值就是\Sigma矩阵中的对角线元素,它们是矩阵A的......
  • 【HMS Core】您的设备未安装最新版本的HMS Core,XXX无法正常运行
    【关键字】未安装HMSCore、XXX无法正常运行、IAP应用内支付 【问题描述】项目中接入了华为应用内支付SDK,在使用时调用了如下接口:Iap.getIapClient(activity).isEnvReady然后弹出了一个对话框,提示:“您的设备未安装最新版本的HMSCore,XXX无法正常运行”,详情跟下图中的弹框是......
  • es(Elasticsearch)查询报错: Set fielddata=true on [level] in order to load fieldd
     Invocationofinitmethodfailed;nestedexceptionisElasticsearchStatusException[Elasticsearchexception[type=search_phase_execution_exception,reason=allshardsfailed]];nested:ElasticsearchException[Elasticsearchexception[type=illegal_argument_......
  • Menu callback函数
    对于一般的函数来说,函数的编写和调用都是我们自己。但callback函数不是这样的,它是由我们编写但是不由我们调用,由我们将函数指针传给其他模块,再由其他模块通过我们传递的函数指针来调用我们编写的函数。 在menu5.2中,向其他模块传递callback函数的函数如下,传递的callback函数就......
  • React Native 开发环境搭建
    一、React Native介绍二、开发环境的搭建2.1、Node.js安装Node.js要求14版或更新https://nodejs.org/en 查看版本:2.2、yarn安装2.3、react-native-cli安装安装项目:命令:2.4、下载Chocolatey包管理器在Linux下,大家喜欢用apt-get来安装应用程序,如今在windows下......
  • clickhouse
    ck是一个列式存储的数据库,其针对的场景是OLAP。OLAP的特点是:数据不经常写,即便写也是批量写。不像OLTP是一条一条写大多数是读请求查询并发较少,不适合放置先生高并发业务场景使用 ,CK本身建议最大一秒100个并发查询。不要求事务click的优点#为了增强压缩比例,ck存储的一列......
  • vscode项目中加入eslint配置不生效,控制台有报错,但是代码没有标红
    项目中配置下载了eslint各种配置,vscode配置文件settings.json中配置了,但是就是代码没有标红,不能自动修复。最终发现问题所在在vscode的配置文件settings.json中eslint.options有个这个参数,如果没有注释就注释掉,有的话就放开,进行一个切换就可以了这是我整个settings.json里的......
  • css笔记
    3.CSS样式css,专门用来“美化”标签。基础CSS,写简单页面&看懂&改。模块,调整和修改。3.1快速了解<imgsrc="..."style="height:100px"/><divstyle="color:red;">中国联通</div>3.2CSS应用方式1.在标签上<imgsrc="..."style=&q......
  • Micro-Estimates of Wealth for all Low 数据搜集
    Micro-EstimatesofWealthforallLow-andMiddle-IncomeCountries1.Thefirsttestusesdatafrom15LMICsthathavecollectedandpublishedcensusdatasince2001(SIAppendix,TableS3).Thesedatacontaincensussurveyresponsesfrom27millionuniq......