您的当前位置:首页正文

C#关于RAR,ZIP的操作

来源:九壹网

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;
using Microsoft.Win32;
namespace RarClass
{
    public class unrar
    {
    public void unCompressRAR(string unRarPatch, string rarPatch, string rarName)
        {
            string the_rar;
            RegistryKey the_Reg;
            object the_Obj;
            string the_Info;

                the_Reg = Registry.LocalMachine.OpenSubKey(@”SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe”);
                the_Obj = the_Reg.GetValue(“”);
                the_rar = the_Obj.ToString();
                the_Reg.Close();
                //the_rar = the_rar.Substring(1, the_rar.Length – 7);

                if (Directory.Exists(unRarPatch) == false)
                {
                    Directory.CreateDirectory(unRarPatch);
                }
                the_Info = “x  -y  ” + rarName + ” ” + unRarPatch ;
                ProcessStartInfo the_StartInfo = new ProcessStartInfo();
                the_StartInfo.FileName = the_rar;
                the_StartInfo.Arguments = the_Info;
                the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                the_StartInfo.WorkingDirectory = rarPatch;//获取压缩包路径

                Process the_Process = new Process();
                the_Process.StartInfo = the_StartInfo;
                the_Process.Start();
                the_Process.WaitForExit();
                the_Process.Close();
               
           
        }
    }
}

2.

                Directory.CreateDirectory(path);
                

                startinfo.WorkingDirectory 

 

昨天又看了下,发现如果路径中有空格(如:D:\Program Files\)的话压缩解压就会出现问题,折磨了我很长时间,最后实在没办法了就在cmd里面试了半天,发现在有空格的路径上加双引号就可以了。在代码里Directory.CreateDirectory(path);后面把 path 和 rarName 都判断一下如果有空格,就加上 path = “\”" + path + “\”";

 

3.

  c#与RAR 收藏
本次示例主要实现:
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.zip”;
        System.Diagnostics.Process Process1 = new System.Diagnostics.Process();
        Process1.StartInfo.FileName = “Winrar.exe”;
        Process1.StartInfo.CreateNoWindow = true;

        1
        压缩c:\freezip\free.txt(即文件夹及其下文件freezip\free.txt)
        到c:\freezip\free.rar
        //strzipPath = “C:\\freezip\\free”;//默认压缩方式为 .rar
        //Process1.StartInfo.Arguments = ” a -r ” + strzipPath + ” ” + strtxtPath;

        2
        压缩c:\freezip\free.txt(即文件夹及其下文件freezip\free.txt)
        到c:\freezip\free.rar
        //strzipPath = “C:\\freezip\\free”;//设置压缩方式为 .zip
        //Process1.StartInfo.Arguments = ” a -afzip ” + strzipPath + ” ” + strtxtPath;

        3
        压缩c:\freezip\free.txt(即文件夹及其下文件freezip\free.txt)
        到c:\freezip\free.zip 直接设定为free.zip
        //Process1.StartInfo.Arguments = ” a -r “+strzipPath+” ” + strtxtPath ;

        4
        搬迁压缩c:\freezip\free.txt(即文件夹及其下文件freezip\free.txt)
        到c:\freezip\free.rar 压缩后 原文件将不存在
        //Process1.StartInfo.Arguments = ” m ” + strzipPath + ” ” + strtxtPath;

        5
        压缩c:\freezip\下的free.txt(即文件free.txt)
        到c:\freezip\free.zip 直接设定为free.zip 只有文件 而没有文件夹
        //Process1.StartInfo.Arguments = ” a -ep ” + strzipPath + ” ” + strtxtPath;

        6
        解压缩c:\freezip\free.rar
        到 c:\freezip\
        //strtxtPath = “c:\\freezip\\”;
        //Process1.StartInfo.Arguments = ” x ” + strzipPath + ” ” + strtxtPath;

        7
        加密压缩c:\freezip\free.txt(即文件夹及其下文件freezip\free.txt)
        到c:\freezip\free.zip 密码为123456 注意参数间不要空格
        //Process1.StartInfo.Arguments = ” a -p123456 ” + strzipPath + ” ” + strtxtPath;

        8
        解压缩加密的c:\freezip\free.rar
        到 c:\freezip\   密码为123456 注意参数间不要空格
        //strtxtPath = “c:\\freezip\\”;
        //Process1.StartInfo.Arguments = ” x -p123456 ” + strzipPath + ” ” + strtxtPath;

       9
       -o+ 覆盖 已经存在的文件
       -o- 不覆盖 已经存在的文件
       //strtxtPath = “c:\\freezip\\”;
       //Process1.StartInfo.Arguments = ” x -o+ ” + strzipPath + ” ” + strtxtPath;

       10
       只从指定的zip中
       解压出free1.txt
       到指定路径下
       压缩包中的其他文件 不予解压
       //strtxtPath = “c:\\freezip\\”;
       //Process1.StartInfo.Arguments = ” x ” + strzipPath + ” ” +” free1.txt” + ” ” + strtxtPath;

       11
       通过 -y 对所有询问回应为”是” 以便 即便发生错误 也不弹出WINRAR的窗口
       -cl 转换文件名为小写字母
       //strtxtPath = “c:\\freezip\\”;
       //Process1.StartInfo.Arguments = ” t -y -cl ” + strzipPath + ” ” + ” free1.txt”;

        Process1.Start();   
        if (Process1.HasExited)
        {
               int iExitCode = Process1.ExitCode;
                if (iExitCode == 0)
                {
                    Response.Write(iExitCode.ToString() + ” 正常完成”);
                }
                else
                {
                    Response.Write(iExitCode.ToString() + ” 有错完成”);
                }
        }
    }

4.

C#调用rar.exe解压一个rar文件到系统的临时目录

 

//C#调用rar.exe解压一个rar文件到系统的临时目录:
//取得系统临时目录
string sysTempDir = Path.GetTempPath();

 

//要解压的文件路径,请自行设置
string rarFilePath = @”d:\test.rar”;

//组合出需要shell的完整格式
string shellArguments = string.Format(“x -o+ \”{0}\” \”{1}\\\”",
    rarFilePath, unrarDestPath);

//用Process调用
using (Process unrar = new Process())
{
    unrar.StartInfo.FileName = “rar.exe”;
    unrar.StartInfo.Arguments = shellArguments;
    //隐藏rar本身的窗口
    unrar.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    unrar.Start();
    //等待解压完成
    unrar.WaitForExit();
    unrar.Close();
}

转载于:https://www.cnblogs.com/yanghb/archive/2010/08/06/1793877.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Top