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.
|