1.     /// <summary>
  2. /// 解压RAR和ZIP文件(需存在Winrar.exe(只要自己电脑上可以解压或压缩文件就存在Winrar.exe))
  3. /// </summary>
  4. /// <param name="UnPath">解压后文件保存目录</param>
  5. /// <param name="rarPathName">待解压文件存放绝对路径(包括文件名称)</param>
  6. /// <param name="IsCover">所解压的文件是否会覆盖已存在的文件(如果不覆盖,所解压出的文件和已存在的相同名称文件不会共同存在,只保留原已存在文件)</param>
  7. /// <param name="PassWord">解压密码(如果不需要密码则为空)</param>
  8. /// <returns>true(解压成功);false(解压失败)</returns>
  9. public static bool UnRarOrZip(string UnPath, string rarPathName, bool IsCover,string PassWord)
  10. {
  11. if (!Directory.Exists(UnPath))
  12. Directory.CreateDirectory(UnPath);
  13. Process Process1 = new Process();
  14. Process1.StartInfo.FileName = "Winrar.exe";
  15. Process1.StartInfo.CreateNoWindow = true;
  16. string cmd = "";
  17. if (!string.IsNullOrEmpty(PassWord) && IsCover)
  18. //解压加密文件且覆盖已存在文件( -p密码 )
  19. cmd = string.Format(" x -p{0} -o+ {1} {2} -y", PassWord, rarPathName, UnPath);
  20. else if (!string.IsNullOrEmpty(PassWord) && !IsCover)
  21. //解压加密文件且不覆盖已存在文件( -p密码 )
  22. cmd = string.Format(" x -p{0} -o- {1} {2} -y", PassWord, rarPathName, UnPath);
  23. else if (IsCover)
  24. //覆盖命令( x -o+ 代表覆盖已存在的文件)
  25. cmd = string.Format(" x -o+ {0} {1} -y" , rarPathName,UnPath);
  26. else
  27. //不覆盖命令( x -o- 代表不覆盖已存在的文件)
  28. cmd = string.Format(" x -o- {0} {1} -y", rarPathName, UnPath);
  29. //命令
  30. Process1.StartInfo.Arguments = cmd;
  31. Process1.Start();
  32. Process1.WaitForExit();//无限期等待进程 winrar.exe 退出
  33. //Process1.ExitCode==0指正常执行,Process1.ExitCode==1则指不正常执行
  34. if (Process1.ExitCode == )
  35. {
  36. Process1.Close();
  37. return true;
  38. }
  39. else
  40. {
  41. Process1.Close();
  42. return false;
  43. }
  44.  
  45. }
  46.  
  47. /// <summary>
  48. /// 压缩文件成RAR或ZIP文件(需存在Winrar.exe(只要自己电脑上可以解压或压缩文件就存在Winrar.exe))
  49. /// </summary>
  50. /// <param name="filesPath">将要压缩的文件夹或文件的绝对路径</param>
  51. /// <param name="rarPathName">压缩后的压缩文件保存绝对路径(包括文件名称)</param>
  52. /// <param name="IsCover">所压缩文件是否会覆盖已有的压缩文件(如果不覆盖,所压缩文件和已存在的相同名称的压缩文件不会共同存在,只保留原已存在压缩文件)</param>
  53. /// <param name="PassWord">压缩密码(如果不需要密码则为空)</param>
  54. /// <returns>true(压缩成功);false(压缩失败)</returns>
  55. public static bool CondenseRarOrZip(string filesPath, string rarPathName,bool IsCover, string PassWord)
  56. {
  57. string rarPath = Path.GetDirectoryName(rarPathName);
  58. if (!Directory.Exists(rarPath))
  59. Directory.CreateDirectory(rarPath);
  60. Process Process1 = new Process();
  61. Process1.StartInfo.FileName = "Winrar.exe";
  62. Process1.StartInfo.CreateNoWindow = true;
  63. string cmd = "";
  64. if (!string.IsNullOrEmpty(PassWord) && IsCover)
  65. //压缩加密文件且覆盖已存在压缩文件( -p密码 -o+覆盖 )
  66. cmd = string.Format(" a -ep1 -p{0} -o+ {1} {2} -r", PassWord, rarPathName, filesPath);
  67. else if (!string.IsNullOrEmpty(PassWord) && !IsCover)
  68. //压缩加密文件且不覆盖已存在压缩文件( -p密码 -o-不覆盖 )
  69. cmd = string.Format(" a -ep1 -p{0} -o- {1} {2} -r", PassWord, rarPathName, filesPath);
  70. else if (string.IsNullOrEmpty(PassWord) && IsCover)
  71. //压缩且覆盖已存在压缩文件( -o+覆盖 )
  72. cmd = string.Format(" a -ep1 -o+ {0} {1} -r", rarPathName, filesPath);
  73. else
  74. //压缩且不覆盖已存在压缩文件( -o-不覆盖 )
  75. cmd = string.Format(" a -ep1 -o- {0} {1} -r", rarPathName, filesPath);
  76. //命令
  77. Process1.StartInfo.Arguments = cmd;
  78. Process1.Start();
  79. Process1.WaitForExit();//无限期等待进程 winrar.exe 退出
  80. //Process1.ExitCode==0指正常执行,Process1.ExitCode==1则指不正常执行
  81. if (Process1.ExitCode == )
  82. {
  83. Process1.Close();
  84. return true;
  85. }
  86. else
  87. {
  88. Process1.Close();
  89. return false;
  90. }
  91.  
  92. }

C#压缩或解压(rar和zip文件)的更多相关文章

  1. 在Ubuntu系统中解压rar和zip文件的方法

    大家在以前的windows系统中会存有很多rar和zip格式的压缩文件,Ubuntu系统默认情况下对这些文件的支持不是很好,如果直接用"归档管理器"打开会提示错误,因此今天跟大家分 ...

  2. 文件压缩、解压工具类。文件压缩格式为zip

    package com.JUtils.file; import java.io.BufferedOutputStream; import java.io.File; import java.io.Fi ...

  3. linux中tar命令(打包、压缩、解压)、zip和unzip、rar多种压缩文件

    一.名词解释 打包:将一大堆文件或目录变成一个总的文件[tar命令] 压缩:将一个大的文件通过一些压缩算法变成一个小文件[gzip,bzip2等] Linux中很多压缩程序只能针对一个文件进行压缩,这 ...

  4. 使用C#压缩解压rar和zip格式文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  5. linux 下面压缩、解压.rar文件

    一,解压问题 在网上下东西的时候,经常会遇到.rar后缀的文件,我用tar解压,解压不出,上网找啊找,一直没找到什么合适的工具来压缩和解压.rar后缀的文件,现在我找到了. 二,rar和unrar安装 ...

  6. Linux解压rar、zip、war、tar文件

    在Linux上解压常见文件的命令: rar文件:rar e xxx.rar zip文件:unzip -xzvf xxx.zip war包:jar -xvf xxx.war tar包:tar -xzvf ...

  7. golang zip 压缩,解压(含目录文件)

    每天学习一点go src. 今天学习了zip包的简单使用,实现了含目录的压缩与解压. 写了两个方法,实现了压缩.解压. package ziptest import ( "archive/z ...

  8. python-----自动解压并删除zip文件

    如何自动解压并删除zip? 如何解压  →  使用内置模块来实现(shutil.unpack_archive) 如何删除zip  →  使用内置模块os来实现(os.remove) 如何监测zip的出 ...

  9. golang tar gzip 压缩,解压(含目录文件)

    tar是用于文件归档,gzip用于压缩.仅仅用tar的话,达不到压缩的目的.我们常见的tar.gz就是用gzip压缩生成的tar归档文件. go实现tar压缩与解压与zip类似,区别在于tar需要使用 ...

随机推荐

  1. LeetCode(8)String to Integer (atoi)

    题目: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input ca ...

  2. 安装mongodb卡顿

    "3.6下载安装会卡死."的原因在于,默认安装是包含mongodb compass,这个包的,这个包大约有180MB,下载很慢,导致所谓的的”卡死“. 如果你选用自定义安装的并且不 ...

  3. nginx+django+uwsgi+https 配置问题点

    - ssl 证书申请 申请域名的网站申请下载对应文件即可 - nginx  配置 https [root@VM_2_29_centos conf]# nginx -t nginx: [emerg] u ...

  4. 九度oj 题目1256:找出两个只出现了一次的数字

    题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 输入: 输入的第一行包括一个整数N(1<=N<=1000). 接下来的一行包括N个 ...

  5. nginx报错 too many open files in system

    系统进不去了,用ssh连接服务器也非常慢,负载均衡显示后端连接异常,重启mysql数据库,发现经常重启,或者直接关机,访问页面也访问不到. http://www.51testing.com/html/ ...

  6. spring配置mybatis3

    mybatis官方网站:http://www.mybatis.org/mybatis-3/zh/configuration.html <!--第一步:加载配置数据库相关参数--> < ...

  7. [BZOJ1572] [Usaco2009 Open]工作安排Job(贪心 + 堆)

    传送门 把任务按照d排序 一次加入到堆中,如果当前放不进堆中,并且比堆中最小的大, 就从堆中弹出一个数,再把当前的数放进去 #include <queue> #include <cs ...

  8. Spoj-BIPCSMR16 Team Building

    To make competitive programmers of BUBT, authority decide to take regular programming contest. To ma ...

  9. hdu 1189 并查集

    Farm Irrigation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  10. HDU [P3949] XOR

    线性基求第 k 小异或值 http://www.cnblogs.com/Mr-WolframsMgcBox/p/8567844.html 这道题消元下来是一个上三角矩阵,代码简单,但是不使用与本题的情 ...