c# Zip压缩解压缩

news/2025/2/7 17:07:34/

public class ZipHelper
    {
        #region ZipFile 压缩文件

        /// <summary>
        /// 压缩
        /// </summary>
        /// <param name="strDirectory">要压缩的目录</param>
        /// <param name="zipFile">压缩后的zip地址 绝对地址</param>
        public static void ZipFileDirectory(string strDirectory, string zipFile)
        {
            if (File.Exists(zipFile))
            {
                File.Delete(zipFile);
            }
            System.IO.Compression.ZipFile.CreateFromDirectory(strDirectory, zipFile);//压缩 
        }

        /// <summary>
        /// 压缩文件列表
        /// </summary>
        /// <param name="files">要压缩的文件集合</param>
        /// <param name="zipFile">压缩后的zip地址 绝对地址</param>
        public static void ZipFiles(List<string> files, string zipFile)
        {
            if (File.Exists(zipFile))
            {
                File.Delete(zipFile);
            }
            using (ZipArchive archive = ZipFile.Open(zipFile, ZipArchiveMode.Create))
            {
                foreach (var item in files)
                {
                    if (File.Exists(item))
                    {
                        archive.CreateEntryFromFile(item, Path.GetFileName(item));
                    }
                }
            }
        }
        #endregion

        #region ZipFile 解压文件

        /// <summary>
        /// 解压缩
        /// </summary>
        /// <param name="zipFile">zip地址</param>
        /// <param name="strDirectory">解压</param>
        /// <param name="overWrite">是否覆盖已存在文件</param>
        public static void UnZip(string zipFile, string strDirectory, bool overWrite = true)
        {
            using (var zip = System.IO.Compression.ZipFile.OpenRead(zipFile))
            {
                foreach (var item in zip.Entries)
                {
                    var fileName = Path.Combine(strDirectory, item.FullName);
                    var fileDir = Path.GetDirectoryName(fileName);

                    if (!Directory.Exists(fileDir))
                    {
                        Directory.CreateDirectory(fileDir);
                    }
                    try
                    {
                        item.ExtractToFile(fileName, overWrite);
                    }
                    catch { }
                }
            }
        }
        #endregion
    }


http://www.ppmy.cn/news/1346208.html

相关文章

Deepin基本环境查看(八)【系统安全:房、车、查房、查车】

Deepin基本环境查看&#xff08;八&#xff09;【系统安全&#xff1a;房、车、查房、查车】 - 相关文章目录1、概述2、想象中的... 现实中的...1&#xff09;想象中的我2&#xff09;梦幻中的我3&#xff09;现实中的我 3 要房、要车、还是房车都要1&#xff09;超级计算机2&a…

隐私计算技术创新赋能金融数字化转型

文章目录 前言一、金融数据要素流通和价值发挥面临的挑战二、隐私计算技术助推金融场景建设向纵深发展(一)基于可验证秘密共享算法的跨机构数据联合统计(二)基于联邦半监督学习的沉睡客户挖掘模型(三)基于跨域数据校验算法的客户信息准确性验证(四)基于异构隐私计算平台…

【webrtc】跟webrtc学list遍历

m98 代码:RTT G:\CDN\rtcCli\m98\src\video\call_stats.cc遍历list 进行删除 :remove_if void RemoveOldReports(int64_t now, std::list<CallStats::RttTime>* reports) {static constexpr const <

IAR报错:Error[Pa045]: function “halUartInit“ has no prototype

在IAR工程.c文件末尾添加一个自己的函数&#xff0c;出现了报错Error[Pa045]: function "halUartInit" has no prototype 意思是没有在开头添加函数声明&#xff0c;即void halUartInit(void); 这个问题我们在keil中不会遇到&#xff0c;这是因为IAR编译器规则的一…

三网码支付系统源码,三网免挂有PC软件,有云端源码,附带系统搭建教程

搭建教程 1.先上传云端源码 然后配置Core/Config.php文件里面数据库信息注改&#xff1b;数据库帐号密码 2.云端源码里面Core/Api_Class/Instant_Url_List.php文件配置终端地址注改&#xff1b;第4 http://终端地址/ 3.导入云端数据库 账号admin 密码123456注改&#xff1…

jquery生成多个滑块,并对每个滑块做处理

基础滑块可以参考上一篇 eval(newThree).map((item, index) > { <div id"${uniqueId}" data-value"${item.text}" class"slider2"></div>$(document).ready(function () {for (let i 0; i < sliders.length; i)…

vuecli3 执行 npm run build 打包命令报错:TypeError: file.split is not a function

问题 今天有个项目在打包的时候遇到了一个问题&#xff0c;就是执行 npm run build 命令的时候报错了&#xff0c;如下&#xff1a; 解决 我排查了一下&#xff0c;模拟代码如下&#xff1a;在打包的时候用了 MinChunkSizePlugin const webpack require("webpack"…

在C++的union中使用std::string(非POD对象)的陷阱

struct和union的对比 union最开始是C语言中的关键字&#xff0c;在嵌入式中比较常见&#xff0c;由于嵌入式内存比较稀缺&#xff0c;所以常用union用来节约空间&#xff0c;在其他需要节省内存的地方也可以用到这个关键字&#xff0c;写一个简单程序来说明union的用途 struc…