LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#利用WinRAR实现压缩和解压缩

admin
2021年5月31日 8:29 本文热度 1981

using System;

using Microsoft.Win32;

using System.Diagnostics;

using System.IO;

 

namespace MSCL

{

    /// <summary>

    /// 压缩解压类

    /// </summary>

    public class ZipHelper

    {

        /// <summary>

        /// 利用 WinRAR 进行压缩

        /// </summary>

        /// <param name="path">将要被压缩的文件夹(绝对路径)</param>

        /// <param name="rarPath">压缩后的 .rar 的存放目录(绝对路径)</param>

        /// <param name="rarName">压缩文件的名称(包括后缀)</param>

        /// <returns>true false。压缩成功返回 true,反之,false</returns>

        public bool RAR(string path, string rarPath, string rarName)

        {

            bool flag = false;

            string rarexe;       //WinRAR.exe 的完整路径

            RegistryKey regkey;  //注册表键

            Object regvalue;     //键值

            string cmd;          //WinRAR 命令参数

            ProcessStartInfo startinfo;

            Process process;

            try

            {

                regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");

                regvalue = regkey.GetValue("WinRAR");  // 键值为 "d:\Program Files\WinRAR\WinRAR.exe" "%1"

                rarexe = regvalue.ToString();

                regkey.Close();

                rarexe = rarexe.Substring(1, rarexe.Length - 7);  // d:\Program Files\WinRAR\WinRAR.exe

 

                Directory.CreateDirectory(path);

                //压缩命令,相当于在要压缩的文件夹(path)上点右键->WinRAR->添加到压缩文件->输入压缩文件名(rarName)

                cmd = string.Format("a {0} {1} -r",

                                    rarName,

                                    path);

                startinfo = new ProcessStartInfo();

                startinfo.FileName = rarexe;

                startinfo.Arguments = cmd;                          //设置命令参数

                startinfo.WindowStyle = ProcessWindowStyle.Hidden;  //隐藏 WinRAR 窗口

 

                startinfo.WorkingDirectory = rarPath;

                process = new Process();

                process.StartInfo = startinfo;

                process.Start();

                process.WaitForExit(); //无限期等待进程 winrar.exe 退出

                if (process.HasExited)

                {

                    flag = true;

                }

                process.Close();

            }

            catch (Exception e)

            {

                throw e;

            }

            return flag;

        }

 

 

        /// <summary>

        /// 利用 WinRAR 进行解压缩

        /// </summary>

        /// <param name="path">文件解压路径(绝对)</param>

        /// <param name="rarPath">将要解压缩的 .rar 文件的存放目录(绝对路径)</param>

        /// <param name="rarName">将要解压缩的 .rar 文件名(包括后缀)</param>

        /// <returns>true false。解压缩成功返回 true,反之,false</returns>

        public bool UnRAR(string path, string rarPath, string rarName)

        {

            bool flag = false;

            string rarexe;

            RegistryKey regkey;

            Object regvalue;

            string cmd;

            ProcessStartInfo startinfo;

            Process process;

            try

            {

                regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");

                regvalue = regkey.GetValue("");

                rarexe = regvalue.ToString();

                regkey.Close();

                rarexe = rarexe.Substring(1, rarexe.Length - 7);

 

                Directory.CreateDirectory(path);

                //解压缩命令,相当于在要压缩文件(rarName)上点右键->WinRAR->解压到当前文件夹

                cmd = string.Format("x {0} {1} -y",

                                    rarName,

                                    path);

                startinfo = new ProcessStartInfo();

                startinfo.FileName = rarexe;

                startinfo.Arguments = cmd;

                startinfo.WindowStyle = ProcessWindowStyle.Hidden;

 

                startinfo.WorkingDirectory = rarPath;

                process = new Process();

                process.StartInfo = startinfo;

                process.Start();

                process.WaitForExit();

                if (process.HasExited)

                {

                    flag = true;

                }

                process.Close();

            }

            catch (Exception e)

            {

                throw e;

            }

            return flag;

        }

    }

}


该文章在 2021/5/31 8:29:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved