c# rar解压大小_C#压缩或解压(rar和zip文件)

本文介绍了一个使用WinRAR进行文件解压和压缩的方法,包括如何设置解压路径、是否覆盖现有文件、设置密码等选项。同时也提供了压缩文件的功能,并支持多种参数配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

///

/// 解压RAR和ZIP文件(需存在Winrar.exe(只要自己电脑上可以解压或压缩文件就存在Winrar.exe))

///

/// 解压后文件保存目录

/// 待解压文件存放绝对路径(包括文件名称)

/// 所解压的文件是否会覆盖已存在的文件(如果不覆盖,所解压出的文件和已存在的相同名称文件不会共同存在,只保留原已存在文件)

/// 解压密码(如果不需要密码则为空)

/// true(解压成功);false(解压失败)

public static bool UnRarOrZip(string UnPath, string rarPathName, bool IsCover,string PassWord)

{

if (!Directory.Exists(UnPath))

Directory.CreateDirectory(UnPath);

Process Process1 = new Process();

Process1.StartInfo.FileName = "Winrar.exe";

Process1.StartInfo.CreateNoWindow = true;

string cmd = "";

if (!string.IsNullOrEmpty(PassWord) && IsCover)

//解压加密文件且覆盖已存在文件( -p密码 )

cmd = string.Format(" x -p{0} -o+ {1} {2} -y", PassWord, rarPathName, UnPath);

else if (!string.IsNullOrEmpty(PassWord) && !IsCover)

//解压加密文件且不覆盖已存在文件( -p密码 )

cmd = string.Format(" x -p{0} -o- {1} {2} -y", PassWord, rarPathName, UnPath);

else if (IsCover)

//覆盖命令( x -o+ 代表覆盖已存在的文件)

cmd = string.Format(" x -o+ {0} {1} -y" , rarPathName,UnPath);

else

//不覆盖命令( x -o- 代表不覆盖已存在的文件)

cmd = string.Format(" x -o- {0} {1} -y", rarPathName, UnPath);

//命令

Process1.StartInfo.Arguments = cmd;

Process1.Start();

Process1.WaitForExit();//无限期等待进程 winrar.exe 退出

//Process1.ExitCode==0指正常执行,Process1.ExitCode==1则指不正常执行

if (Process1.ExitCode == 0)

{

Process1.Close();

return true;

}

else

{

Process1.Close();

return false;

}

}

///

/// 压缩文件成RAR或ZIP文件(需存在Winrar.exe(只要自己电脑上可以解压或压缩文件就存在Winrar.exe))

///

/// 将要压缩的文件夹或文件的绝对路径

/// 压缩后的压缩文件保存绝对路径(包括文件名称)

/// 所压缩文件是否会覆盖已有的压缩文件(如果不覆盖,所压缩文件和已存在的相同名称的压缩文件不会共同存在,只保留原已存在压缩文件)

/// 压缩密码(如果不需要密码则为空)

/// true(压缩成功);false(压缩失败)

public static bool CondenseRarOrZip(string filesPath, string rarPathName,bool IsCover, string PassWord)

{

string rarPath = Path.GetDirectoryName(rarPathName);

if (!Directory.Exists(rarPath))

Directory.CreateDirectory(rarPath);

Process Process1 = new Process();

Process1.StartInfo.FileName = "Winrar.exe";

Process1.StartInfo.CreateNoWindow = true;

string cmd = "";

if (!string.IsNullOrEmpty(PassWord) && IsCover)

//压缩加密文件且覆盖已存在压缩文件( -p密码 -o+覆盖 )

cmd = string.Format(" a -ep1 -p{0} -o+ {1} {2} -r", PassWord, rarPathName, filesPath);

else if (!string.IsNullOrEmpty(PassWord) && !IsCover)

//压缩加密文件且不覆盖已存在压缩文件( -p密码 -o-不覆盖 )

cmd = string.Format(" a -ep1 -p{0} -o- {1} {2} -r", PassWord, rarPathName, filesPath);

else if (string.IsNullOrEmpty(PassWord) && IsCover)

//压缩且覆盖已存在压缩文件( -o+覆盖 )

cmd = string.Format(" a -ep1 -o+ {0} {1} -r", rarPathName, filesPath);

else

//压缩且不覆盖已存在压缩文件( -o-不覆盖 )

cmd = string.Format(" a -ep1 -o- {0} {1} -r", rarPathName, filesPath);

//命令

Process1.StartInfo.Arguments = cmd;

Process1.Start();

Process1.WaitForExit();//无限期等待进程 winrar.exe 退出

//Process1.ExitCode==0指正常执行,Process1.ExitCode==1则指不正常执行

if (Process1.ExitCode == 0)

{

Process1.Close();

return true;

}

else

{

Process1.Close();

return false;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值