使用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 解压缩相关推荐

  1. java 制作 winrar,Java使用winrar解压缩

    Java使用winrar解压缩 JAVA JDK中的解压缩似乎不能解压缩我们手工压缩的RAR文件,只能解压JDK中的API压缩的RAR 所以想出以下用WINRAR命令行方式的解压缩 package e ...

  2. 遇到 *.7z001 *.7z.002 *.7z.003 如何用winrar解压缩

    有3个 .7z 文件,想要用winrar 解压缩, 可以打开  cmd   然后: 1.   进入D盘 2.进入F盘 3.进入文件夹,    并用命令合并

  3. winrar解压缩中文文件夹乱码的最简单解决办法

    使用winrar解压缩文件. 提示:文件名.目录名或卷标语法不正确. 查看对应文件夹,显示是乱码. 以为是下载时文件错误.多次下载.问题依旧. 用其他电脑下载,解压缩没有问题. 相同文件复制到第一台电 ...

  4. java winrar_Java使用winrar解压缩 | 学步园

    JAVA JDK中的解压缩似乎不能解压缩我们手工压缩的RAR文件,只能解压JDK中的API压缩的RAR 所以想出以下用WINRAR命令行方式的解压缩 package edu.nwpu.vcampus. ...

  5. 学习用WinRAR解压缩软件解压下载的PPStream压缩包

    工欲善其事,必先利其器.要想安装PPStream我们就必须先将下载下来的PPStream压缩包解压或者直接用解压缩软件打开压缩包, 这时我们就想到用WinRAR来解决此问题(也可以用Windows自带 ...

  6. 如何用WinRAR解压缩7z分卷文件

    由于WinRAR支持7z压缩包的解压,但并不支持7z分卷文件的解压,若直接用WinRAR打开7z分卷文件时会报错. 原因是7z的分卷文件其实是把一个大的,例如ABC.7z文件,直接切割成多个分卷文件: ...

  7. 【PC工具】文件压缩解压工具winrar解压缩装机必备软件,winRAR5.70免费无广告

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天分享一个常用的压缩解压工具winrar. 为啥要搞这个无广告版呢(废话),总之网上 ...

  8. 【PC工具】winrar解压缩装机必备软件,winRAR5.70免费无广告

    ▼ 下载连接 ▼ 关注公众号[DLGG创客DIY] 后台发送"winRAR"获取下载地址 扫描二维码 关注我们吧 软件|来源网络 侵权|联系删除

  9. WinRar 解压缩文件官方去广告版

    在无有破解上找到的,主要是广告比较烦. 原帖: https://www.52pojie.cn/thread-642730-1-1.html 本帖最后由 fuyechun 于 2017-9-9 09:2 ...

最新文章

  1. vdi voi idv区别_VDI,IDV,VOI究竟有何不同
  2. 大龄程序员刚迈过了 35 岁这个“坎儿”,和大家说点儿心里话
  3. 百度地图-省市县联动加载地图
  4. C/C++ 电子书推荐
  5. Arcgis API for JavaScript在地图上实现手机定位信息的追踪显示
  6. Linux信号 五 信号挂起与信号掩码操作接口集
  7. php学习之路五(表单验证)
  8. androidstudio sqlite where 条件_SQL 面试题:WHERE 和 HAVING、ON 有什么区别?
  9. FastLeaderElection
  10. 【Vue】---- 手动封装on,emit,off
  11. 目前支持DDR3-1600(包括主板超频)最强的CPU是哪个?
  12. struts2 tag if NumberFormatException
  13. Git 命令行(cygwin) + Git Extensions + Git Source Control Provider
  14. 永中Office遭遇厄运
  15. PPT设置自动生成页码
  16. java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况...
  17. 计算机建立局域网共享,局域网两台电脑如何建立共享文件夹
  18. 总结一下__declspec(dllimport)的作用
  19. 计算机存储一个字节数是,在计算机中,如果一个存储单元能存放一个字节,则容量为64KB的存储器中的存储单元个数 。...
  20. Linux截取不定长度字符串,Linux技巧:使用 expr 命令获取子字符串和字符串长度...

热门文章

  1. 硬件工程师成长之路(11)——职业规划
  2. USB gadget设备驱动解析
  3. 关于YOLOv7的分析
  4. 关于antV G6中的on事件、util.each事件及update方法等的使用总结
  5. Python框架Flask系列教程(1)——基础-黄勇-专题视频课程
  6. 2021年低压电工免费试题及低压电工考试技巧
  7. 给南京沁恒芯片公司点个赞
  8. 大数据技术之电商推荐系统(6) | 基于LFM的离线推荐模块
  9. 夕拾算法初级篇:5)1020. 月饼(贪心)
  10. 【Java中实现微信公众号模板消息推送】