天天看点

c# 压缩文件

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.Win32;

using System.IO;

using System.Diagnostics;

namespace JaveSystem

{

    public class WinRar

    {

        static WinRar()

        {

            //判断是否安装了WinRar.exe

            RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");

            _existSetupWinRar = !string.IsNullOrEmpty(key.GetValue(string.Empty).ToString());

            //获取WinRar.exe路径

            _winRarPath = key.GetValue(string.Empty).ToString();

        }

        static bool _existSetupWinRar;

        /// <summary>

        /// 获取是否安装了WinRar的标识

        /// </summary>

        public static bool ExistSetupWinRar

            get { return _existSetupWinRar; }

        static string _winRarPath;

        /// 获取WinRar.exe路径

        public static string WinRarPath

            get { return _winRarPath; }

        /// 压缩到.rar

        /// <param name="intputPath">输入目录</param>

        /// <param name="outputPath">输出目录</param>

        /// <param name="outputFileName">输出文件名</param>

        public static void CompressRar(string intputPath, string outputPath, string outputFileName)

            //rar 执行时的命令、参数

            string rarCmd;

            //启动进程的参数

            ProcessStartInfo processStartInfo;

            //进程对象

            Process process;

            try

            {

                if (!ExistSetupWinRar)

                {

                    throw new ArgumentException("Not setuping the winRar, you can Compress.make sure setuped winRar.");

                }

                //判断输入目录是否存在

                if (!Directory.Exists(intputPath))

                    throw new ArgumentException("CompressRar'arge : inputPath isn't exsit.");

                //命令参数

                rarCmd = " a " + outputFileName + " " + intputPath + " -r";

                //创建启动进程的参数

                processStartInfo = new ProcessStartInfo();

                //指定启动文件名

                processStartInfo.FileName = WinRarPath;

                //指定启动该文件时的命令、参数

                processStartInfo.Arguments = rarCmd;

                //指定启动窗口模式:隐藏

                processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

                //指定压缩后到达路径

                processStartInfo.WorkingDirectory = outputPath;

                //创建进程对象

                process = new Process();

                //指定进程对象启动信息对象

                process.StartInfo = processStartInfo;

                //启动进程

                process.Start();

                //指定进程自行退行为止

                process.WaitForExit();

            }

            catch (Exception ex)

                throw ex;

        /// 解压.rar

        /// <param name="inputRarFileName">输入.rar</param>

        public static void UnCompressRar(string inputRarFileName, string outputPath)

                    throw new ArgumentException("Not setuping the winRar, you can UnCompress.make sure setuped winRar.");

                //如果压缩到目标路径不存在

                if (!Directory.Exists(outputPath))

                    //创建压缩到目标路径

                    Directory.CreateDirectory(outputPath);

                rarCmd = "x " + inputRarFileName + " " + outputPath + " -y";

    }

}

RAR参数:

一、压缩命令

1、将temp.txt压缩为temp.rarrar a temp.rar temp.txt 

2、将当前目录下所有文件压缩到temp.rarrar a temp.rar *.* 

3、将当前目录下所有文件及其所有子目录压缩到temp.rarrar a temp.rar *.* -r 

4、将当前目录下所有文件及其所有子目录压缩到temp.rar,并加上密码123rar a temp.rar *.* -r -p123

二、解压命令

1、将temp.rar解压到c:\temp目录rar e temp.rar c:\temprar e *.rar c:\temp(支持批量操作) 

2、将temp.rar解压到c:\temp目录,并且解压后的目录结构和temp.rar中的目录结构一

压缩目录test及其子目录的文件内容 

Wzzip test.zip test -r -P 

WINRAR A test.rar test -r 

删除压缩包中的*.txt文件 

Wzzip test.zip *.txt -d 

WinRAR d test.rar *.txt 

刷新压缩包中的文件,即添加已经存在于压缩包中但更新的文件 

Wzzip test.zip test -f 

Winrar f test.rar test 

更新压缩包中的文件,即添加已经存在于压缩包中但更新的文件以及新文件 

Wzzip test.zip test -u 

Winrar u test.rar test 

移动文件到压缩包,即添加文件到压缩包后再删除被压缩的文件 

Wzzip test.zip -r -P -m 

Winrar m test.rar test -r 

添加全部 *.exe 文件到压缩文件,但排除有 a或b 

开头名称的文件 

Wzzip test *.exe -xf*.* -xb*.* 

WinRAR a test *.exe -xf*.* -xb*.* 

加密码进行压缩 

Wzzip test.zip test 

-s123。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到+号标记(附图1)。 

WINRAR A test.rar test -p123 

-r。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到*号标记(附图2)。 

按名字排序、以简要方式列表显示压缩包文件 

Wzzip test.zip -vbn 

Rar l test.rar 

锁定压缩包,即防止未来对压缩包的任何修改 

无对应命令 

Winrar k test.rar 

创建360kb大小的分卷压缩包 

Winrar a -v360 test 

带子目录信息解压缩文件 

Wzunzip test -d 

Winrar x test -r 

不带子目录信息解压缩文件 

Wzunzip test 

Winrar e test 

解压缩文件到指定目录,如果目录不存在,自动创建 

Wzunzip test newfolder 

Winrar x test newfolder 

解压缩文件并确认覆盖文件 

Wzunzip test -y 

Winrar x test -y 

解压缩特定文件 

Wzunzip test *.txt 

Winrar x test *.txt 

解压缩现有文件的更新文件 

Wzunzip test -f 

Winrar x test -f 

解压缩现有文件的更新文件及新文件 

Wzunzip test -n 

Winrar x test -u 

批量解压缩文件 

Wzunzip *.zip 

WinRAR e *.rar

上一篇: fash 3D 游戏

继续阅读