C#实现rar压缩与解压缩文件的方法

 
哈喽!大家好,我是HappyGirl快乐女孩,最爱海贼王💞💞💞
是一位爱好技术的【技术Fans】!😜😜😜


💞💞💞 如果有对技术感兴趣的宅友,欢迎关注💞💞💞
❤️❤️❤️感谢各位❤️❤️❤️
————————————————

此程序利用 WinRAR 程序对文件进行压缩,命令行语法可参考WinRAR中文帮助。

 🎒  🎒  🎒 文章目录 🎒  🎒  🎒

目录

🏳️‍🌈 利用WinRAR进行压缩

🍁 利用WinRAR解压缩

📣 WinRAR语法


 🎒  🎒  🎒 目录结束 🎒  🎒  🎒


🏳️‍🌈 利用WinRAR进行压缩

/// <param name="path">将要被压缩的文件夹(绝对路径)</param>  
/// <param name="rarPath">压缩后的 .rar 的存放目录(绝对路径)</param>
/// <param name="rarName">压缩文件的名称(包括后缀)</param>  
/// <returns>true 或 false。压缩成功返回 true,反之,false。</returns>
public bool RAR(string path, string rarPath, string rarName)  
{  
  bool flag = false;  
  string rarexe;    //WinRAR.exe 的完整路径  
  RegistryKey regkey; //注册表键  
  Object regvalue;   //键值  
  string cmd;     //WinRAR 命令参数  
  ProcessStartInfo startinfo;  
  Process process;  
  try 
  {  
    regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");  
    regvalue = regkey.GetValue(""); // 键值为 "d:\Program Files\WinRAR\WinRAR.exe" "%1"  
    rarexe = regvalue.ToString();    
    regkey.Close();  
    rarexe = rarexe.Substring(1, rarexe.Length - 7); // d:\Program Files\WinRAR\WinRAR.exe  
    Directory.CreateDirectory(path);  
    //压缩命令,相当于在要压缩的文件夹(path)上点右键 ->WinRAR->添加到压缩文件->输入压缩文件名(rarName)  
    cmd = string.Format("a {0} {1} -r", rarName, path);  
    startinfo = new ProcessStartInfo();  
    startinfo.FileName = rarexe;  
    startinfo.Arguments = cmd; //设置命令参数  
    startinfo.WindowStyle = ProcessWindowStyle.Hidden; //隐藏 WinRAR 窗口  
    startinfo.WorkingDirectory = rarPath;  
    process = new Process();  
    process.StartInfo = startinfo;  
    process.Start();  
    process.WaitForExit(); //无限期等待进程 winrar.exe 退出  
    if (process.HasExited)  
    {  
      flag = true;  
    }  
    process.Close();  
  }  
  catch (Exception e)  
  {  
    throw e;  
  }  
  return flag;  
}  

🍁 利用WinRAR解压缩

/// <param name="path">文件解压路径(绝对)</param>  
/// <param name="rarPath">将要解压缩的 .rar 文件的存放目录(绝对路径)</param>
/// <param name="rarName">将要解压缩的 .rar 文件名(包括后缀)</param>
/// <returns>true 或 false。解压缩成功返回 true,反之,false。</returns>
public bool UnRAR(string path, string rarPath, string rarName)  
{  
  bool flag = false;  
  string rarexe;  
  RegistryKey regkey;  
  Object regvalue;  
  string cmd;  
  ProcessStartInfo startinfo;  
  Process process;  
  try 
  {  
    regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");  
    regvalue = regkey.GetValue("");  
    rarexe = regvalue.ToString();  
    regkey.Close();  
    rarexe = rarexe.Substring(1, rarexe.Length - 7);  
    Directory.CreateDirectory(path);  
    //解压缩命令,相当于在要压缩文件(rarName)上点右键 ->WinRAR->解压到当前文件夹  
    cmd = string.Format("x {0} {1} -y", rarName, path);  
    startinfo = new ProcessStartInfo();  
    startinfo.FileName = rarexe;  
    startinfo.Arguments = cmd;  
    startinfo.WindowStyle = ProcessWindowStyle.Hidden;  
    startinfo.WorkingDirectory = rarPath;  
    process = new Process();  
    process.StartInfo = startinfo;  
    process.Start();  
    process.WaitForExit();  
    if (process.HasExited)  
    {  
      flag = true;  
    }  
    process.Close();  
  }  
  catch (Exception e)  
  {  
    throw e;  
  }  
  return flag;  
} 

📣 WinRAR语法

e             解压压缩文件到当前目录 
  l[t,b]        列出压缩文件[技术信息,简洁] 
  p             打印文件到标准输出设备 
  t             测试压缩文件 
  v[t,b]        详细列出压缩文件[技术信息,简洁] 
  x             用绝对路径解压文件 

<开关> 
  -             停止扫描 
  ac            压缩或解压后清除存档属性 
  ad            添加压缩文件名到目标路径 
  ap<格式>      添加路径到压缩文件中 
  av-           禁用用户身份校验 
  c-            禁用注释显示 
  cfg-          禁用读取配置 
  cl            名称转换为小写 
  cu            名称转换为大写 
  dh            打开共享文件 
  ep            从名称中排除路径 
  ep3           扩展路径为包含盘符的完全路径 
  f             刷新文件 
  id[c,d,p,q]   禁用消息 
  ierr          发送所有消息到标准错误设备 
  inul          禁用所有消息 
  ioff          完成一个操作后关闭 PC 电源 
  kb            保留损坏的已解压文件 
  n<文件>       仅包含指定的文件 
  n@            从标准输入设备读取文件名到包括 
  n@<列表>      在指定的文件列表包括文件 
  o+            覆盖已存在文件 
  o-            不覆盖已存在文件 
  oc            设置 NTFS 压缩属性 
  or            自动重命名文件 
  ow            保存或恢复文件所有者和组 
  p[密码]       设置密码 
  p-            不询问密码 
  r             递归子目录 
  ri<P>[:<S>]   设置优先级(0-默认,1-最小..15-最大)和以毫秒为单位的休眠时间 
  sl<大小>      处理小于指定大小的文件 
  sm<大小>      处理超过指定大小的文件 
  ta<日期>      添加日期 <日期> 后修改的文件,日期格式 YYYYMMDDHHMMSS 
  tb<日期>      添加日期 <日期> 前修改的文件,日期格式 YYYYMMDDHHMMSS 
  tn<时间>      添加 <时间> 以后的文件 
  to< 时间>      添加 <时间> 以前的文件 
  ts<m,c,a>[N]  保存或恢复文件时间(修改,创建,访问) 
  u             更新文件 
  v             列出所有卷 
  ver[n]        文件版本控制 
  vp            每卷之前暂停 
  x<文件>       排除指定的文件 
  x@            从标准输入设备读取要排除的文件名 
  x@<列表>      排除指定列表文件中的文件 
  y             假设对全部询问都回答是

 

各位走过路过,不要错过,记得关注我哦

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java实现文件压缩可以使用Java内置的ZipOutputStream类。下面是一个示例代码: ```java import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class FileCompressor { public static void main(String[] args) throws Exception { String sourceFile = "source.txt"; String compressedFile = "compressed.zip"; compress(sourceFile, compressedFile); } private static void compress(String sourceFile, String compressedFile) throws Exception { FileOutputStream fos = new FileOutputStream(compressedFile); ZipOutputStream zos = new ZipOutputStream(fos); File file = new File(sourceFile); FileInputStream fis = new FileInputStream(file); ZipEntry zipEntry = new ZipEntry(file.getName()); zos.putNextEntry(zipEntry); byte[] bytes = new byte[1024]; int length; while ((length = fis.read(bytes)) >= 0) { zos.write(bytes, 0, length); } zos.closeEntry(); fis.close(); zos.close(); fos.close(); } } ``` C#实现文件压缩可以使用System.IO.Compression.ZipArchive类。下面是一个示例代码: ```csharp using System.IO; using System.IO.Compression; class Program { static void Main(string[] args) { string sourceFile = "source.txt"; string compressedFile = "compressed.zip"; Compress(sourceFile, compressedFile); } private static void Compress(string sourceFile, string compressedFile) { using (FileStream fs = new FileStream(compressedFile, FileMode.Create)) { using (ZipArchive zipArchive = new ZipArchive(fs, ZipArchiveMode.Create)) { zipArchive.CreateEntryFromFile(sourceFile, Path.GetFileName(sourceFile)); } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HappyGirl快乐女孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值