C#调用WinRar执行rar、zip压缩的方法
程序员文章站
2022-06-21 20:46:56
本文实例讲述了c#调用winrar执行rar、zip压缩的方法。分享给大家供大家参考。具体如下:
判断系统是否安装了winrar
///
本文实例讲述了c#调用winrar执行rar、zip压缩的方法。分享给大家供大家参考。具体如下:
判断系统是否安装了winrar
/// <summary> /// 验证winrar是否安装。 /// </summary> /// <returns>true:已安装,false:未安装</returns> private static bool existsrar(out string winrarpath) { winrarpath = string.empty; //通过regedit(注册表)找到winrar文件 var registrykey = registry.localmachine.opensubkey(@"software\microsoft\windows\currentversion\app paths\winrar.exe"); if (registrykey == null) return false;//未安装 //registrykey = thereg;可以直接返回registry对象供会面操作 winrarpath = registrykey.getvalue("").tostring(); //这里为节约资源,直接返回路径,反正下面也没用到 registrykey.close();//关闭注册表 return !string.isnullorempty(winrarpath); }
压缩
/// <summary> /// 生成zip /// </summary> /// <param name="path">文件夹路径</param> /// <param name="rarpath">生成压缩文件的路径</param> /// <param name="rarname">生成压缩文件的文件名</param> public static void compressrar(string path, string rarpath, string rarname) { try { string winrarpath = null; if (!existsrar(out winrarpath)) return; //验证winrar是否安装。 var pathinfo = string.format("a -afzip -m0 -ep1 \"{0}\" \"{1}\"", rarname, path); #region winrar 用到的命令注释 //[a] 添加到压缩文件 //afzip 执行zip压缩方式,方便用户在不同环境下使用。 //(取消该参数则执行rar压缩) //-m0 存储 添加到压缩文件时不压缩文件。共6个级别【0-5】,值越大效果越好,也越慢 //ep1 依名称排除主目录(生成的压缩文件不会出现不必要的层级) //r 修复压缩档案 //t 测试压缩档案内的文件 //as 同步压缩档案内容 //-p 给压缩文件加密码方式为:-p123456 #endregion //打包文件存放目录 var process = new process { startinfo = new processstartinfo { filename = winrarpath,//执行的文件名 arguments = pathinfo,//需要执行的命令 useshellexecute = false,//使用shell执行 windowstyle = processwindowstyle.hidden,//隐藏窗体 workingdirectory = rarpath,//rar 存放位置 createnowindow = false,//不显示窗体 }, }; process.start();//开始执行 process.waitforexit();//等待完成并退出 process.close();//关闭调用 cmd 的什么什么 } catch (exception ex) { throw ex; } }
解压
/// <summary> /// 解压 /// </summary> /// <param name="unrarpath">文件夹路径</param> /// <param name="rarpath">压缩文件的路径</param> /// <param name="rarname">压缩文件的文件名</param> /// <returns></returns> public static string uncompressrar(string unrarpath, string rarpath, string rarname) { try { string winrarpath = null; if (!existsrar(out winrarpath)) return ""; //验证winrar是否安装。 if (directory.exists(unrarpath) == false) { directory.createdirectory(unrarpath); } var pathinfo = "x " + rarname + " " + unrarpath + " -y"; var process = new process { startinfo = new processstartinfo { filename = winrarpath,//执行的文件名 arguments = pathinfo,//需要执行的命令 useshellexecute = false,//使用shell执行 windowstyle = processwindowstyle.hidden,//隐藏窗体 workingdirectory = rarpath,//rar 存放位置 createnowindow = false,//不显示窗体 }, }; process.start();//开始执行 process.waitforexit();//等待完成并退出 process.close();//关闭调用 cmd 的什么什么 } catch (exception ex) { throw ex; } return unrarpath; }
希望本文所述对大家的c#程序设计有所帮助。