c#调用 WinRAR.exe以命令行形式实现文件、文件夹的解压缩
在实际项目应用中会偶尔使用文件的压缩上传以及服务器端的加压处理,故写此文记录以备不时之需.
1.自己编写的ZipHelper类.
public static class ZipHelper
{
private static string pathExe = AppDomain.CurrentDomain.BaseDirectory + @"Resource\WinRAR.exe";
/// <summary>
/// 使用Gzip方法压缩文件
/// </summary>
/// <param name="sourcefilename"></param>
/// <param name="zipfilename"></param>
/// <returns></returns>
public static bool GZipFile(string sourcefilename, string zipfilename)
{
bool isSucc = false;
//拼接压缩命令参数
string args = string.Format("a -as -r -afzip -ed -ibck -inul -m5 -mt5 -ep1 {0} {1}", zipfilename, sourcefilename); //启动压缩进程
isSucc = ProcessHelper.StartProcess(pathExe,args);
return isSucc;
} /// <summary>
/// 使用GZIP解压文件的方法
/// </summary>
/// <param name="zipfilename"></param>
/// <param name="unzipfilename"></param>
/// <returns></returns>
public static bool UnGzipFile(string zipfilename, string unzipfilename)
{
bool isSucc = false;
if (!Directory.Exists(unzipfilename))
{
Directory.CreateDirectory(unzipfilename);
}
//拼接解压命令参数
string args = string.Format("x -ibck -inul -y -mt5 {0} {1}", zipfilename, unzipfilename); //启动解压进程
isSucc = ProcessHelper.StartProcess(pathExe, args);
return isSucc;
}
}
2.用到的ProcessHelper类.
public class ProcessHelper
{
/// <summary>
/// 启动进程执行exe
/// </summary>
/// <param name="exePath">exe路径</param>
/// <param name="exeArgs">exe所需参数</param>
/// <returns></returns>
public static bool StartProcess(string exePath,string exeArgs)
{
bool isHidden = true;
bool isSucc = true;
Process process = new Process();
process.StartInfo.FileName = exePath;
process.StartInfo.Arguments = exeArgs;
if (isHidden)
{
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.CreateNoWindow = true;
}
else
{
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
process.StartInfo.CreateNoWindow = false;
}
process.Start();
int idx = ;
while (!process.HasExited)
{
idx++;
process.WaitForExit();
if (idx == )
{
process.Kill();
isSucc = false;
}
}
process.Close();
process.Dispose();
return isSucc;
}
}
3.WinRar相关命令解释:


c#调用 WinRAR.exe以命令行形式实现文件、文件夹的解压缩的更多相关文章
- Microsoft Windows Installer 工具 Msiexec.exe 的命令行选项
摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...
- [转]Explorer.exe的命令行参数
本文来自:Explorer.exe的命令行参数 摘要 本文讲述explorer.exe(资源管理器)的命令行. 语法 EXPLORER.EXE [/n][/e][,/root,<object&g ...
- Ubuntu下用命令行快速打开各类型文件(转)
nautilus /media/pm/文档/book/system/必读nautilus /media/pm/文档/book/android/ndk 内核/framerwork/android wai ...
- c# 命令行下编译c#文件 // c# file类读写文件
c# 命令行下编译c#文件 2010-03-01 15:02:14| 分类: c# 学习|字号 订阅 在 开始 ——>程序 ——>vstool中打开vs2008命令提示. 通过 ...
- 命令行工具解析Crash文件,dSYM文件进行符号化
备份 文/爱掏蜂窝的熊(简书作者)原文链接:http://www.jianshu.com/p/0b6f5148dab8著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序 在日常开发 ...
- Linux命令行批量替换多文件中的字符串【转】
Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串. ...
- Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏
xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...
- 如何编写一个带命令行参数的Python文件
看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...
- 在mysql命令行下执行sql文件
***********在mysql命令行下执行sql文件*********** C:\Windows\system32>cd E:\MySQL\mysql-5.7.16-winx64\bin / ...
随机推荐
- shell脚本中case的用法
shell脚本中case选择语句可以结合read指令实现比较好的交互应答操作,case接收到read指令传入的一个或多个参数,然后case根据参数做选择操作. case的语法如下 case $char ...
- 开发监测keepalived裂脑的脚本
检测思路:在备节点上执行脚本,如果可以ping通主节点并且备节点有VIP就报警,让人员介入检查是否裂脑. 在LB02备节点上开发脚本并执行: [root@lb02 ~]# cat /server/sc ...
- mybatis的优缺点及应用场合
mybatis框架的优点 与jdbc相比,减少了50%以上的代码量 mybatis是最简单的持久化框架,小巧简单且易学 mybatis想到灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写 ...
- 【JS】实时监控页面,input框数值自动求和
需求: 有一个页面需要将input框填入的各个费用自动相加,添加到“合计费用”里. 解决方案: 使用jquery的blur实践,每个费用的Input框检测到失去焦点时,将所有的input框数值相加求和 ...
- Android Studio 3.0 安装注意点
在安装Android studio 3.0+ 时候,会遇到默认不带Android SDK 的问题. 在启动Android studio 后,会提示让选择SDK目录,选择下载目录,对应的去下载 那么问题 ...
- Nosql和RDBMS的比较及解释
概述 传统的关系型数据库以及数据仓库在面对大数据的处理时显得越来越力不从心.因为关系数据库管理系统 (RDBMS)的设计从未考虑过能够处理日益增长且格式多变的数据,以及访问数据并进行分析的用户需求呈爆 ...
- ActiveMQ发布-订阅消息模式(同点对点模式的区别)
点对点与发布订阅最初是由JMS定义的.这两种模式主要区别或解决的问题就是发送到队列的消息能否重复消费(多订阅) 点对点: 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费 ...
- 笔记-python-standard library-8.5.heapq
笔记-python-standard library-8.5.heapq 1. heapq-heap queue algorithm源码:Lib/heapq.pythis module provide ...
- flask url_for()和redirect的区别
一. 两者用来重定向的时候,被操作的对象不同. redirect直接是url,就是app.route的路径参数. url_for()是对函数进行操作. from flask import Flask, ...
- WordCount by Java
WordCount by Java 软测第二周作业 该项目github地址如下: https://github.com/YuQiao0303/WordCount 一.概述 项目WordCount的需求 ...