C#调用WinRar执行rar、zip压缩的方法

本文实例讲述了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#程序设计有所帮助。

(0)

相关推荐

  • C#文件流进行压缩和解压缩的方法

    本文实例讲述了C#文件流进行压缩和解压缩的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; usi

  • C#中使用WinRAR实现加密压缩及解压缩文件

    本次示例主要实现: 1.压缩文件夹及其下文件 2.压缩文件夹下文件 3.压缩文件夹及其下文件为rar 还是 zip 4.解压缩 5.加密压缩及解加密压缩 ----------- 示例代码如下: protected void Button1_Click(object sender, EventArgs e) { string strtxtPath = "C://freezip//free.txt"; string strzipPath = "C://freezip//free.

  • c#调用winrar解压缩文件代码分享

    复制代码 代码如下: using Microsoft.Win32;using System.Diagnostics;压缩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\S

  • C#实现GZip压缩和解压缩入门实例

    主要是因为GZipStream的构造函数中第一个需要传入一个Stream,第二个是指定操作方式:压缩还是解压缩. 当时的疑问点主要有: 1.我传入的Stream是包含未压缩数据的Stream吗?2.我解压时是从一个压缩流中读取数据后再用GZipStream解压吗? 出现以上两点疑问,完全是我将GZipStream的用法理解反了. 其实GZipStream里面存的是已经压缩过的数据流,传入的Stream是作为基础Stream传入,如果要压缩,那你就可以传一个空的Stream进去,如果要解压,就将包

  • C#使用GZipStream解压缩数据文件的方法

    本文实例讲述了C#使用GZipStream解压缩数据文件的方法.分享给大家供大家参考.具体分析如下: GZipStream用于从一个流读取数据写入到另一个流,GZipStream不能写入到其它的资源,比如文件或者内存,只能从流到流. GZipStream使用的一般流程如下: 打开一个现有的文件  打开/创建输出文件  创建GZipStream对象  逐字节读源文件,并把它传递到GZipStream  使用GZipStream写入到输出文件流 String sourcefilename = FIL

  • C#使用DeflateStream解压缩数据文件的方法

    本文实例讲述了C#使用DeflateStream解压缩数据文件的方法.分享给大家供大家参考.具体分析如下: DeflateStream方法用于从一个流中读取数据,并写入到另一个流.DeflateStream不写入数据到其它类型的资源,比如文件或者内存. DeflateStream在写入另一个流的时候,它会对数据进行压缩和解压缩. 使用DEFLATE压缩数据文件的一般过程: 打开一个现有的文件  打开/创建输出文件  创建减缩对象  逐字节读取源文件,并把它传递给DEFLATE对象  使用defl

  • C#使用WinRar命令进行压缩和解压缩操作的实现方法

    本文实例讲述了C#使用WinRar命令进行压缩和解压缩操作的实现方法.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Diagnostics; using System.IO; public partial c

  • asp.net C#实现解压缩文件的方法

    本文实例讲述了asp.net C#实现解压缩文件的方法.一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量的但需要调用ICSharpCode.SharpZipLib.dll类了,最后一个比较实例可压缩也可以解压缩了分享给大家供大家参考.具体如下: 解压缩单个文件: 复制代码 代码如下: using System.IO; using System.IO.Compression; string sourceFile=@"D:2.zip"; string d

  • Windows系统中C#调用WinRAR来压缩和解压缩文件的方法

    过程说明都在注释里,我们直接来看代码: 压缩: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using ICSharpCode.SharpZipLib.Zip; using System.Diagnostics; public class winrar { #region 压缩文件 /// <summary> /// 压缩文件 ///

  • C#调用WinRar执行rar、zip压缩的方法

    本文实例讲述了C#调用WinRar执行rar.zip压缩的方法.分享给大家供大家参考.具体如下: 判断系统是否安装了winrar /// <summary> /// 验证WinRar是否安装. /// </summary> /// <returns>true:已安装,false:未安装</returns> private static bool ExistsRar(out String winRarPath) { winRarPath = String.Em

  • asp.net中调用winrar实现压缩解压缩的代码

    asp.net压缩文件夹调用示例:rar("e:/www.jb51.net/", "e:/www.jb51.net.rar"); asp.net解压缩rar文件调用示例:unrar("e:/www.jb51.net.rar", "e:/"); 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Di

  • C++Zip压缩解压缩示例(支持递归压缩)

    第三方函数.头文件.测试工程下载地址:http://pan.baidu.com/s/1gSfKo 复制代码 代码如下: // 文件名: ZipFunction.h#pragma once#include "zip.h"#include "unzip.h" namespace ZipUtils{    // ---------------------------------------------------------------------------------

  • 纯vbs实现zip压缩与unzip解压缩函数代码

    压缩代码: 复制代码 代码如下: Zip "D:\test.iso", "D:\test.zip" Zip "D:\test", "D:\test.zip" Msgbox "OK" Sub Zip(ByVal mySourceDir, ByVal myZipFile) Set fso = CreateObject("Scripting.FileSystemObject") If fso.

  • Python实现压缩和解压缩ZIP文件的方法分析

    本文实例讲述了Python实现压缩和解压缩ZIP文件的方法.分享给大家供大家参考,具体如下: 有时我们需要在 Python 中使用 zip 文件,而在1.6版中,Python 就已经提供了 zipfile 模块可以进行这样的操作.不过 Python 中的 zipfile 模块不能处理多卷的情况,不过这种情况并不多见,因此在通常情况下已经足够使用了.下面我只是对一些基本的 zipfile 操作进行了记录,足以应付大部分的情况了. zipfile 模块可以让你打开或写入一个 zip 文件.比如: i

  • C#调用Rar文件及获取Rar返回值的方法

    本文实例讲述了C#调用Rar文件及获取Rar返回值的方法.分享给大家供大家参考.具体如下: 该程序适用于C#调用. 所需的Rar.exe可从WinRar官网下载控制台版. 按钮OK点击事件: System.Diagnostics.Process process; private void btnRAR_Click(object sender, EventArgs e) { if (System.IO.File.Exists("Rar.exe")) { try { process = n

  • 一个PHP的ZIP压缩类分享

    功能:将文件压缩成zip,或者rar的压缩包.后缀名可以自定义. 使用方法:首先实例化,然后传参.两个参数.第一个关于你文件地址的一个Array.第二个是要你要保存的压缩包文件的绝对地址. 使用例子: 复制代码 代码如下: $zipfiles =array("/root/pooy/test1.txt","/root/pooy/test2.txt");        $z = new PHPZip();        //$randomstr = random(8);

  • Vue webpack 项目自动打包压缩成zip文件的方法

    这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署时给后端发包都要手动zip压缩,这样一两次还行,但遇到项目板块测试和临时加急功能测试的时候,一天可能就要打包好多次,这就很烦了.所以索性在执行 npm run build 命令时就直接打包成zip文件,方便省事! 1.插件装备 webpack插件:filemanager-webpack-plugin,该插件可执行打包,复制,移动,删除文件以及新文件夹在build之前及之后创建. 安装: npm i

  • java实现一次性压缩多个文件到zip中的方法示例

    本文实例讲述了java实现一次性压缩多个文件到zip中的方法.分享给大家供大家参考,具体如下: 1.需要引入包: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntr

随机推荐