在实际项目应用中会偶尔使用文件的压缩上传以及服务器端的加压处理,故写此文记录以备不时之需.

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相关命令解释:

 /* 
             * <命令> -<开关1> -<开关N> <压缩文件 > <文件...> <@列表文件...> <解压路径\> 
             *压缩 a      a -as -r -afzip -ed -ibck -inul -m5 -mt5 -ep1 e:\text.zip d:\text.jpg
             *解压 x      x -ibck -inul -y -mt5 e:\text.zip e:\text
             *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 所有弹窗选择"是" 
             */  
4.官方相关解压缩命令行解释:
 
5.使用方法,拷贝WinRar.exe到你的工程指定目录即可直接调用.

c#调用 WinRAR.exe以命令行形式实现文件、文件夹的解压缩的更多相关文章

  1. Microsoft Windows Installer 工具 Msiexec.exe 的命令行选项

    摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...

  2. [转]Explorer.exe的命令行参数

    本文来自:Explorer.exe的命令行参数 摘要 本文讲述explorer.exe(资源管理器)的命令行. 语法 EXPLORER.EXE [/n][/e][,/root,<object&g ...

  3. Ubuntu下用命令行快速打开各类型文件(转)

    nautilus /media/pm/文档/book/system/必读nautilus /media/pm/文档/book/android/ndk 内核/framerwork/android wai ...

  4. c# 命令行下编译c#文件 // c# file类读写文件

    c# 命令行下编译c#文件 2010-03-01 15:02:14|  分类: c# 学习|字号 订阅     在 开始  ——>程序 ——>vstool中打开vs2008命令提示. 通过 ...

  5. 命令行工具解析Crash文件,dSYM文件进行符号化

    备份   文/爱掏蜂窝的熊(简书作者)原文链接:http://www.jianshu.com/p/0b6f5148dab8著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序 在日常开发 ...

  6. Linux命令行批量替换多文件中的字符串【转】

    Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串. ...

  7. Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏

    xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...

  8. 如何编写一个带命令行参数的Python文件

    看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...

  9. 在mysql命令行下执行sql文件

    ***********在mysql命令行下执行sql文件*********** C:\Windows\system32>cd E:\MySQL\mysql-5.7.16-winx64\bin / ...

随机推荐

  1. getchar输入多行字符,原格式输出(包含换行符)

    #include<stdio.h> int main() { FILE fp; ]; ; char ch; while((ch=getchar())!=EOF){ str[k++]=ch; ...

  2. jsp页面:一个form,不同请求提交form

    需求:一个表单中有一个请求 action="url"发送数据地址: 在表单外有一个请求,请求form表单提交的数据 我们用js来写:通过每次请求传不同的action=url; 例如 ...

  3. linux系统快捷键使用

    本文记录linux系统中快捷键的使用 Ctrl + l 清屏,相当于clear命令Ctrl + o 执行当前命令,并重新显示本命令Ctrl + s 阻止屏幕输出,锁定Ctrl + q 允许屏幕输出Ct ...

  4. spring MVC体系结构和请求控制器

    MVC处理过程 spring MVC架构模式都进行了分层设计如下 数据访问接口:DAO层 处理业务逻辑层:service层 数据实体:POJO 负责前端请求的接受并处理:servlet 负责前端页面展 ...

  5. 绘制矩形:描边矩形imagerectangle()、填充矩形imagefilledrectangle()

    <?php //1. 绘制图像资源(创建一个画布) $image = imagecreatetruecolor(500, 300); //2. 先分配一个绿色 $green = imagecol ...

  6. OpenFaceswap 入门教程(3): 软件参数篇!

    OpenFaceswap 的使用可以说是非常简单,只要稍加点拨就可以学会,厉害一点的人根本不需要教程,直接自己点几下就知道了.看了前面安装篇和使用篇.我想大多数人应该会了. 当学会了使用之后,你可能对 ...

  7. linux 的安装

    3linux 软件安装 3.1 vm ware 软件安装 双击VMware-workstation-full-10.0.2-1744117.1398244508.exe 单击下一步 单击下一步 选择典 ...

  8. Python知识点入门笔记——特色数据类型(列表)

    Python中提供了列表这种数据类型(类型为list)来存储多个值构成的序列 用逗号将不同数据分隔开,整体放在一个方括号[]里就创建了列表 列表中的数据类型可以是相同的,也可以是不同的 列表中还可以嵌 ...

  9. DiyCode开源项目 AboutActivity分析

    1.首先看一下效果 这是手机上显示的效果: 1.1首先是一个标题栏,左侧一个左箭头,然后一个图标. 1.2然后下方是一个可以滑动的页面. 1.3分成了7个部分. 1.4DiyCode的图标. 1.5然 ...

  10. optparser 模块 提取IP,端口,用户名,密码参数模板

    import optparse #class FtpClient(object): #自定义类可以自己修改 '''ftp客户端''' #def __init__(self): parser = opt ...