zoukankan      html  css  js  c++  java
  • C#调用RAR压缩与解压

           public void RARsave(string rarPatch, string rarFiles,string  patch,string rarName)
            {
                String the_rar;
                RegistryKey the_Reg;
                Object the_Obj;
                String the_Info;
                ProcessStartInfo the_StartInfo;
                Process the_Process;
                try
                {
                    the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\Shell\Open\Command");
                    the_Obj = the_Reg.GetValue("");
                    the_rar = the_Obj.ToString();
                    the_Reg.Close();
                    the_rar = the_rar.Substring(1, the_rar.Length - 7);
                    if (!Directory.Exists(patch))
                    Directory.CreateDirectory(patch);
                    //命令参数

                    //the_Info = " a  c:\test.rar a.txt -r"; //文件压缩

                    the_Info = string.Format(" a -df {0}\{1}  {2}  -r", patch, rarName, rarFiles);// " a " + rarName + " " + patch;
                    the_StartInfo = new ProcessStartInfo();
                    the_StartInfo.FileName = the_rar;
                    the_StartInfo.Arguments = the_Info;
                    the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    //打包文件存放目录

                    the_StartInfo.WorkingDirectory = rarPatch;
                    the_Process = new Process();
                    the_Process.StartInfo = the_StartInfo;
                    the_Process.Start();
                    the_Process.WaitForExit();
                    the_Process.Close();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public string unRAR(string rarPath, string rarName, string unRarPath)
            {
                String the_rar;
                RegistryKey the_Reg;
                Object the_Obj;
                String the_Info;
                ProcessStartInfo the_StartInfo;
                Process the_Process;
                try
                {
                    the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\Shell\Open\Command");
                    the_Obj = the_Reg.GetValue("");
                    the_rar = the_Obj.ToString();
                    the_Reg.Close();
                    the_rar = the_rar.Substring(1, the_rar.Length - 7);
                    if (!Directory.Exists(unRarPath + "\" + rarName.Substring(0, rarName.LastIndexOf(".")-1)))
                        Directory.CreateDirectory(unRarPath + "\" + rarName.Substring(0, rarName.LastIndexOf(".")-1));
                    the_Info = string.Format("x {0} {1}\{2} -y", rarName, unRarPath, rarName.Substring(0, rarName.LastIndexOf(".")-1));
                    the_StartInfo = new ProcessStartInfo();
                    the_StartInfo.FileName = the_rar;
                    the_StartInfo.Arguments = the_Info;
                    the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    the_StartInfo.WorkingDirectory = rarPath;//获取压缩包路径

                    the_Process = new Process();
                    the_Process.StartInfo = the_StartInfo;
                    the_Process.Start();
                    the_Process.WaitForExit();
                    the_Process.Close();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return "";//Server.MapPath(unRarPatch);
            }
            public string unRAR(string rarPath, string rarName, string unRarPath, string unRarPathName)
            {
                String the_rar;
                RegistryKey the_Reg;
                Object the_Obj;
                String the_Info;
                ProcessStartInfo the_StartInfo;
                Process the_Process;
                try
                {
                    the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\Shell\Open\Command");
                    the_Obj = the_Reg.GetValue("");
                    the_rar = the_Obj.ToString();
                    the_Reg.Close();
                    the_rar = the_rar.Substring(1, the_rar.Length - 7);
                    //if (!Directory.Exists(unRarPath + "\" + unRarPathName))
                    //    Directory.CreateDirectory(unRarPath + "\" + unRarPathName);
                    //the_Info = string.Format("x {0} {1}\{2} -y", rarName, unRarPath, unRarPathName);

                    if (!Directory.Exists(unRarPath ))
                        Directory.CreateDirectory(unRarPath);
                    the_Info = string.Format("x {0} {1} -y", rarName, unRarPath);
                    the_StartInfo = new ProcessStartInfo();
                    the_StartInfo.FileName = the_rar;
                    the_StartInfo.Arguments = the_Info;
                    the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    the_StartInfo.WorkingDirectory = rarPath;//获取压缩包路径

                    the_Process = new Process();
                    the_Process.StartInfo = the_StartInfo;
                    the_Process.Start();
                    the_Process.WaitForExit();
                    the_Process.Close();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return "";//Server.MapPath(unRarPatch);
            }

    RARsave("c:\emrbs", "1.txt 2.txt", "c:\test", "test.rar");

    unRAR("d:\","f.rar","d:\ftest");

     

    /压缩程序安装路径  

                string pathExe = Application.StartupPath + @"WinRAR.exe";  
                Process p = new Process();  
                p.StartInfo.FileName = pathExe;  
                p.StartInfo.Arguments = @"a -as -r -afzip -ed -hp123 -ibck -inul -m5 -mt5 d:kldder d:easyui";  
                p.StartInfo.CreateNoWindow = true;  
                p.StartInfo.RedirectStandardInput = true;  
                p.StartInfo.RedirectStandardError = false;  
                p.StartInfo.RedirectStandardOutput = true;  
                p.StartInfo.UseShellExecute = false;  
                p.StartInfo.ErrorDialog = false;  
                p.Start();  
                int idx = 1;  
                while (!p.HasExited)  
                {  
                    idx++;  
                    p.WaitForExit(500);  
                    if (idx == 5)  
                    {  
                        p.Kill();  
                    }  
                }  
                p.Close();  
                p.Dispose();  
                /* 
                 * <命令> -<开关1> -<开关N> <压缩文件 > <文件...> <@列表文件...> <解压路径> 
                 *压缩 a      a -as -ed -inul -afrar -df -ibck -m4 -mt3 -or -y -hp123 d:aa d:aa.txt 
                 *解压 x      x -hp123 -ibck -inul -y -mt5 d:aa.rar a: 
                 *a d:Info.zip D:easyui 
                 *-af 指定格式 -afzip -afrar 
                 *-as 在当前添加的文件列表中不存在的被压缩文件,将会从压缩文件中删除 
                 *-df 压缩后删除源文件 
                 *-dr 删除到回收站 
                 *-ed 不添加空文件夹 
                 *-hp 添加密码 -hp123456 
                 *-ibck 后台运行 
                 *-inul 禁止错误信息 
                 *-loff 压缩完成后 关闭电源 
                 *-m0 存储 添加文件到压缩文件但是不压缩   
                 *-m1 最快 最快速的方法 ( 最低的压缩比)  
                 *-m2 快速 快速压缩方法  
                 *-m3 标准 标准 (默认 ) 压缩方法  
                 *-m4 较好 较好的压缩方法 (较高的压缩比)  
                 *-m5 最优 最优的压缩方法 (最高压缩比但是速度也最慢) 
                 *-mtN 线程 -mt5 1~32 
                 *-or 自动重命名文件 
                 *-r 连同子文件 
                 *-z 压缩后测试文件 
                 *-y 所有弹窗选择"是" 
                 */  
     
    *可以直接将winrar.exe 拷贝到 根目录下运行
    *不弹窗只需要打开开光 -ibck -inul 即可

     

    RAR参数:

    一、压缩命令
    1、将temp.txt压缩为temp.rarrar a temp.rar temp.txt 
    2、将当前目录下所有文件压缩到temp.rarrar a temp.rar *.* 
    3、将当前目录下所有文件及其所有子目录压缩到temp.rarrar a temp.rar *.* -r 
    4、将当前目录下所有文件及其所有子目录压缩到temp.rar,并加上密码123rar a temp.rar *.* -r -p123

    二、解压命令
    1、将temp.rar解压到c:/temp目录rar e temp.rar c:/temprar e *.rar c:/temp(支持批量操作) 
    2、将temp.rar解压到c:/temp目录,并且解压后的目录结构和temp.rar中的目录结构一


    压缩目录test及其子目录的文件内容 
    Wzzip test.zip test -r -P 
    WINRAR A test.rar test -r 

    删除压缩包中的*.txt文件 
    Wzzip test.zip *.txt -d 
    WinRAR d test.rar *.txt 


    刷新压缩包中的文件,即添加已经存在于压缩包中但更新的文件 
    Wzzip test.zip test -f 
    Winrar f test.rar test 


    更新压缩包中的文件,即添加已经存在于压缩包中但更新的文件以及新文件 
    Wzzip test.zip test -u 
    Winrar u test.rar test 


    移动文件到压缩包,即添加文件到压缩包后再删除被压缩的文件 
    Wzzip test.zip -r -P -m 
    Winrar m test.rar test -r 


    添加全部 *.exe 文件到压缩文件,但排除有 a或b 
    开头名称的文件 
    Wzzip test *.exe -xf*.* -xb*.* 
    WinRAR a test *.exe -xf*.* -xb*.* 


    加密码进行压缩 
    Wzzip test.zip test 
    -s123。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到+号标记(附图1)。 
    WINRAR A test.rar test -p123 
    -r。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到*号标记(附图2)。 


    按名字排序、以简要方式列表显示压缩包文件 
    Wzzip test.zip -vbn 
    Rar l test.rar 


    锁定压缩包,即防止未来对压缩包的任何修改 
    无对应命令 
    Winrar k test.rar 


    创建360kb大小的分卷压缩包 
    无对应命令 
    Winrar a -v360 test 


    带子目录信息解压缩文件 
    Wzunzip test -d 
    Winrar x test -r 


    不带子目录信息解压缩文件 
    Wzunzip test 
    Winrar e test 


    解压缩文件到指定目录,如果目录不存在,自动创建 
    Wzunzip test newfolder 
    Winrar x test newfolder 


    解压缩文件并确认覆盖文件 
    Wzunzip test -y 
    Winrar x test -y 


    解压缩特定文件 
    Wzunzip test *.txt 
    Winrar x test *.txt 


    解压缩现有文件的更新文件 
    Wzunzip test -f 
    Winrar x test -f 


    解压缩现有文件的更新文件及新文件 
    Wzunzip test -n 
    Winrar x test -u 


    批量解压缩文件 
    Wzunzip *.zip 
    WinRAR e *.rar

  • 相关阅读:
    MyGeneration:开源的代码生成工具
    有了NHibernate就不再需要DAO了
    在vs编辑器里走来走去的快捷键
    asp.net的程序的一种简化结构
    取得gridview的行值
    asp.net中MVC模式的简单实现
    美味书签上的信息质量要好于博客RSS
    DAO已死,至少是中小型项目是这样
    免费好看的msdn中文杂志电子版
    Rhino Mocks是很不错的开源测试框架
  • 原文地址:https://www.cnblogs.com/qufly/p/4120164.html
Copyright © 2011-2022 走看看