C# WinRar 解压缩
使用C#对文件和文件夹进行压缩,需要系统自带WinRar软件。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
using System.Diagnostics;
using System.IO;
namespace BSJBNT.CommonCls
{
public class WinRarHelper
{
/// <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# WinRar 解压缩相关推荐
- java 制作 winrar,Java使用winrar解压缩
Java使用winrar解压缩 JAVA JDK中的解压缩似乎不能解压缩我们手工压缩的RAR文件,只能解压JDK中的API压缩的RAR 所以想出以下用WINRAR命令行方式的解压缩 package e ...
- 遇到 *.7z001 *.7z.002 *.7z.003 如何用winrar解压缩
有3个 .7z 文件,想要用winrar 解压缩, 可以打开 cmd 然后: 1. 进入D盘 2.进入F盘 3.进入文件夹, 并用命令合并
- winrar解压缩中文文件夹乱码的最简单解决办法
使用winrar解压缩文件. 提示:文件名.目录名或卷标语法不正确. 查看对应文件夹,显示是乱码. 以为是下载时文件错误.多次下载.问题依旧. 用其他电脑下载,解压缩没有问题. 相同文件复制到第一台电 ...
- java winrar_Java使用winrar解压缩 | 学步园
JAVA JDK中的解压缩似乎不能解压缩我们手工压缩的RAR文件,只能解压JDK中的API压缩的RAR 所以想出以下用WINRAR命令行方式的解压缩 package edu.nwpu.vcampus. ...
- 学习用WinRAR解压缩软件解压下载的PPStream压缩包
工欲善其事,必先利其器.要想安装PPStream我们就必须先将下载下来的PPStream压缩包解压或者直接用解压缩软件打开压缩包, 这时我们就想到用WinRAR来解决此问题(也可以用Windows自带 ...
- 如何用WinRAR解压缩7z分卷文件
由于WinRAR支持7z压缩包的解压,但并不支持7z分卷文件的解压,若直接用WinRAR打开7z分卷文件时会报错. 原因是7z的分卷文件其实是把一个大的,例如ABC.7z文件,直接切割成多个分卷文件: ...
- 【PC工具】文件压缩解压工具winrar解压缩装机必备软件,winRAR5.70免费无广告
微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天分享一个常用的压缩解压工具winrar. 为啥要搞这个无广告版呢(废话),总之网上 ...
- 【PC工具】winrar解压缩装机必备软件,winRAR5.70免费无广告
▼ 下载连接 ▼ 关注公众号[DLGG创客DIY] 后台发送"winRAR"获取下载地址 扫描二维码 关注我们吧 软件|来源网络 侵权|联系删除
- WinRar 解压缩文件官方去广告版
在无有破解上找到的,主要是广告比较烦. 原帖: https://www.52pojie.cn/thread-642730-1-1.html 本帖最后由 fuyechun 于 2017-9-9 09:2 ...
最新文章
- vdi voi idv区别_VDI,IDV,VOI究竟有何不同
- 大龄程序员刚迈过了 35 岁这个“坎儿”,和大家说点儿心里话
- 百度地图-省市县联动加载地图
- C/C++ 电子书推荐
- Arcgis API for JavaScript在地图上实现手机定位信息的追踪显示
- Linux信号 五 信号挂起与信号掩码操作接口集
- php学习之路五(表单验证)
- androidstudio sqlite where 条件_SQL 面试题:WHERE 和 HAVING、ON 有什么区别?
- FastLeaderElection
- 【Vue】---- 手动封装on,emit,off
- 目前支持DDR3-1600(包括主板超频)最强的CPU是哪个?
- struts2 tag if NumberFormatException
- Git 命令行(cygwin) + Git Extensions + Git Source Control Provider
- 永中Office遭遇厄运
- PPT设置自动生成页码
- java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况...
- 计算机建立局域网共享,局域网两台电脑如何建立共享文件夹
- 总结一下__declspec(dllimport)的作用
- 计算机存储一个字节数是,在计算机中,如果一个存储单元能存放一个字节,则容量为64KB的存储器中的存储单元个数 。...
- Linux截取不定长度字符串,Linux技巧:使用 expr 命令获取子字符串和字符串长度...