压缩或者解压带密码的ZIp包

本文介绍了一种使用 Ionip.ZIP.DLll 库进行文件压缩与解压缩的方法,包括压缩文件夹、解压指定文件及全部文件、从压缩包移除文件和向压缩包添加文件等功能,并提供了另一种利用 WinRAR 实现解压缩的方案。

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

法一:

 引用Ionip.ZIP.DLll


      /// <summary>
        /// 压缩文件夹
        /// </summary>
        /// <param name="FilePath">需要压缩文件夹路径</param>
        /// <param name="FileName">压缩后文件名</param>
        /// <param name="SavePath">压缩后存放路径</param>
        /// <param name="PassWord">压缩密码,null为无密码</param>
        /// <returns>异常消息,成功返回null</returns>
        public static string SetZipFile(string FilePath, string FileName, string SavePath, string PassWord)
        {
            try
            {
                ZipFile zipfile = new ZipFile(SavePath + "\\" + FileName + ".zip", Encoding.Default);
                if (PassWord != string.Empty)
                    zipfile.Password = PassWord;
                zipfile.AddDirectory(FilePath);
                zipfile.Save();
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
            return null;
        }

        /// <summary>
        /// 解压文件
        /// </summary>
        /// <param name="FilePath">zip文件路径</param>
        /// <param name="ReleasePath">解压路径</param>
        /// <param name="FileName">需要解压的文件名</param>
        /// <param name="PassWord">解压密码 null为无密码</param>
        /// <returns>异常消息,成功返回null</returns>
        public static string ReleaseFile(string FilePath, string ReleasePath, string[] FileName, string PassWord)
        {
            try
            {
                ZipFile zipfile = ZipFile.Read(FilePath);
                if (PassWord != string.Empty)
                    zipfile.Password = PassWord;
                foreach (string filename in FileName)
                    zipfile[filename].Extract(ReleasePath);
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
            return null;
        }

        /// <summary>
        /// 解压全部文件
        /// </summary>
        /// <param name="FilePath">zip文件路径</param>
        /// <param name="ReleasePath">解压路径</param>
        /// <param name="PassWord">解压密码,null为无密码</param>
        /// <returns>异常消息,成功返回null</returns>
        public string ReleaseAllFile(string FilePath, string ReleasePath, string PassWord)
        {
            try
            {
                ZipFile zipfile = ZipFile.Read(FilePath);
                if (PassWord != string.Empty)
                    zipfile.Password = PassWord;
                foreach (ZipEntry zipentry in zipfile)
                    zipentry.Extract(ReleasePath);
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
            return null;
        }

        /// <summary>
        /// 从zip文件中移除文件
        /// </summary>
        /// <param name="FilePath">zip文件路径</param>
        /// <param name="FileName">要移除的文件名集合</param>
        /// <returns>异常消息,成功返回null</returns>
        public string DelFile(string FilePath, string[] FileName)
        {
            try
            {
                ZipFile zipfile = ZipFile.Read(FilePath);
                foreach (string filename in FileName)
                    zipfile.RemoveEntry(filename);
                zipfile.Save();
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
            return null;
        }

        /// <summary>
        /// 向zip文件内添加文件
        /// </summary>
        /// <param name="FilePath">zip文件路径</param>
        /// <param name="AddFilePath">要添加的文件路径集合</param>
        /// <returns></returns>
        public string AddFile(string FilePath, string[] AddFilePath)
        {
            try
            {
                ZipFile zipfile = ZipFile.Read(FilePath);
                zipfile.AddFiles(AddFilePath);
                zipfile.Save();
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
            return null;
        }


法二:

   1本地安装Win.rar程序

   2


string strzipPath = path + "\\" + Program.filename.Replace("\0", ""); //带解压的zip
      System.Diagnostics.Process Process1 = new System.Diagnostics.Process();
   Process1.StartInfo.FileName = "Winrar.exe";
                                    Process1.StartInfo.CreateNoWindow = true;
                                    Process1.StartInfo.Arguments = " x -p123456 " + strzipPath + " " + path;
                                    Process1.Start();
path  解压到哪个路径,注意中间要有空格

x -p密码 待解压zip   解压到哪个路径  解压缩

a -p密码 压缩到哪个文件  压缩路径  压缩



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值