.NET利用Ionic.Zip.dll进行文件压缩解压

本文介绍了使用Ionic.Zip.dll组件实现文件的压缩与解压缩方法,包括普通压缩、分卷压缩及解压功能。提供了具体的C#代码实现,并设置了压缩级别、密码保护等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        //引用Ionic.Zip.dll组件
        using Ionic.Zip;
        
        /// <summary>
        /// 加压文件
        /// </summary>
        /// <param name="listPath">待加压各文件的路径</param>
        /// <param name="savePath">加压路径</param>
        public void CompressFile(List<string> testPaths, string savePath)
        {
             var coding = System.Text.Encoding.GetEncoding("gb2312");
             ZipFile zf = new ZipFile(coding);
             zf.Password = "压缩包密码";
             zf.CompressionLevel = Ionic.Zlib.CompressionLevel.Level9;
             foreach (var testPath in testPaths)
             {
                  if (!File.Exists(testPath))
                      continue;
                  zf.AddFile(testPath,".");
             }
             zf.Save(savePath);
             zf.Dispose();
        }

        /// <summary>
        /// 解压文件
        /// </summary>
        /// <param name="filePath">压缩文件路径</param>
        /// <param name="extractPath">解压目录</param>
        public void DeCompressFile(string filePath, string testPath)
        {
            if (!Directory.Exists(testPath))
                 Directory.CreateDirectory(testPath);
            var coding = System.Text.Encoding.GetEncoding("gb2312");
            ZipFile zf = new ZipFile(filePath, coding);
            zf.Password = "压缩包密码";
            zf.ExtractAll(testPath);
            zf.Dispose();
        }

        /// <summary>
        /// 分卷压缩
        /// </summary>
        /// <param name="listPath"></param>
        /// <param name="savePath"></param>
        /// <param name="password"></param>
        /// <param name="segmentSize"></param>
        public void MultiPartarChiveCompress(string SourcePath, string savePath,string password,        int fileSize)
        {
            ZipFile zip = new ZipFile(Encoding.GetEncoding("utf-8"));
            if (!string.IsNullOrEmpty(password))
                 zip.Password = password;
            zip.MaxOutputSegmentSize = fileSize;//fileSize 被压缩的文件大小
            zip.UseZip64WhenSaving = Zip64Option.Always;
            zip.BufferSize = 1024;
            zip.CaseSensitiveRetrieval = true;//是否区分大小写
            zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;//压缩等级,枚举值
            zip.AddFile(SourcePath, ".");
            zip.Save(savePath);
            zip.Dispose();
        }


#region Ionic.Zip压缩文件 //压缩方法一 public void ExeCompOne() { string FileName = DateTime.Now.ToString("yyMMddHHmmssff"); //ZipFile实例化一个压缩文件保存路径的一个对象zip using (ZipFile zip = new ZipFile(@"E:\\yangfeizai\\"+ FileName+".zip",Encoding.Default)) { //加密压缩 zip.Password = "123456"; //将要压缩文件夹添加到zip对象中去(要压缩文件夹路径和名称) zip.AddDirectory(@"E:\\yangfeizai\\"+"12051214544443"); //将要压缩文件添加到zip对象中去,如果文件不存在抛错FileNotFoundExcept //zip.AddFile(@"E:\\yangfeizai\\12051214544443\\"+"Jayzai.xml"); zip.Save(); } } //压缩方法二 public void ExeCompTwo() { string FileName = DateTime.Now.ToString("yyMMddHHmmssff"); //ZipFile实例化一个对象zip using (ZipFile zip = new ZipFile()) { //加密压缩 zip.Password = "123456"; //将要压缩文件夹添加到zip对象中去(要压缩文件夹路径和名称) zip.AddDirectory(@"E:\\yangfeizai\\" + "12051214544443"); //将要压缩文件添加到zip对象中去,如果文件不存在抛错FileNotFoundExcept //zip.AddFile(@"E:\\yangfeizai\\12051214544443\\"+"Jayzai.xml"); //用zip对象中Save重载方法保存压缩文件,参数为保存压缩文件的路径 zip.Save(@"E:\\yangfeizai\\"+ FileName + ".zip"); } } #endregion #region //删除压缩包中的文件 //3.zip文件中删除一个文件,注意无法直接删除一个文件夹 public void ExeDelete(string FileName) { using (ZipFile zip = ZipFile.Read(@"E:\\yangfeizai\\" + FileName + ".zip")) { //zip["Jayzai.xml"] = null; //删除zip对象中的一个文件 zip.RemoveEntry("Jayzai.xml"); zip.Save(); } } #endregion
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值