This site uses cookies to deliver our services. By using this site, you acknowledge that you have read and understand our Cookie and Privacy policy. Your use of Kontext website is subject to this policy. Allow Cookies and Dismiss

C# 利用WinRAR (加密)压缩及解压缩 相关文件夹及文件

258 views 0 comments last modified about 10 years ago Raymond Tang

C# .NET

In this page

本次示例主要实现:
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() + " 有错完成");
                }
        }
    }

更多WinRAR命令(引自WinRAR帮助文档)
a 添加文件到压缩文件
c 添加压缩文件注释
d 从压缩文件删除文件
e 从压缩文件解压压缩,忽略路径
f 刷新压缩文件中的文件
i 在压缩文件中查找字符串
k 锁定压缩文件
m 移动文件和文件夹到压缩文件
r 修复受损的压缩文件
rc 重建丢失的卷
rn 重命名压缩文件
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[name] 转换压缩文件成为自解压文件类型
s- 删除自解压模块
t 测试压缩文件
u 从压缩文件中更新文件
x 以完整路径名称从压缩文件解压压缩

更多WinRAR字母开头(引自WinRAR帮助文档)
-ac 在压缩或解压后清除存档属性
-ad 附加压缩文件名到目标路径中
-af<类型> 指定压缩文件格式
-ag[格式] 以当前日期生成压缩文件名
-ao 添加有存档属性设置的
-ap 设置内部压缩文件路径
-as 同步化压缩文件内容
-av 应用用户身份校验信息
-av- 禁用添加用户身份校验信息
-cfg- 忽略默认配置和环境变量
-cl 将文件名转换成为小写
-cu 将文件名转换成为大写
-df 压缩后删除压缩文件
-dh 打开共享的文件
-ds 不排序压缩的文件
-ed 不添加空文件夹
-en 不添加“压缩文件结束”块
-ep 从名称中排除路径
-ep1 从名称中排除主文件夹
-ep2 扩大成完整路径
-ep3 扩展包含盘符的完整路径
-e[+]<属性> 设置文件排除和包含属性
-f 刷新文件
-hp[密码] 加密文件数据和头
-ibck 在后台运行 WinRAR
-ieml 使用E-mail发送压缩文件
-iicon<名称> 指定自解压图标
-iimg<名称> 指定自解压图片
-ilog[名称] 记录错误到文件中
-inul 关闭错误信息
-ioff 关闭 PC 电源
-k 锁定压缩文件
-kb 保留坏掉的解压文件
-m<n> 设置压缩方式
-mc<参数> 设置高级压缩参数
-md<n> 选择字典大小
-ms 指定文件存储
-n<文件> 仅包含指定的文件
-n@<列表文件> 使用指定的列表文件包含文件
-os 保存 NTFS 数据流
-oc 设置 NTFS “压缩”属性
-ow 处理文件用户身份校验信息
-o+ 覆盖已存在的文件
-o- 不要覆盖已存在的文件
-p[密码] 设置密码
-r 返回子文件夹
-r0 只返回与通配符匹配的子文件夹
-ri 设置优先级和休眠时间
-rr[N] 添加数据恢复记录
-rv[N] 创建恢复卷
-s 创建固实压缩文件
-s<N> 以文件数量创建固实组
-se 以文件扩展名创建固实组
-sfx[名称] 创建自解压文件
-sv 创建互不依赖的固实压缩文件
-sv- 创建互相依赖的固实压缩文件
-s- 禁用固实算法
-t 压缩后测试文件
-ta<日期> 只处理指定日期之后修改的文件
-tb<日期> 只处理指定日期之前修改的文件
-tk 保持原有压缩文件时间
-tl 以最新的文件设置压缩文件时间
-tn<时间> 处理较新于指定时间的文件
-to<时间> 处理较旧于指定时间的文件
-ts<m,c,a> 保存或恢复文件时间(修改,创建,访问)
-u 更新文件
-v<n>[k|b|f|m|M|g|G] 创建分卷压缩
-vd 创建分卷压缩前清除磁盘内容
-ver 文件版本控制
-vn 使用旧风格的卷命名法则
-vp 每次分卷压缩前暂停
-x<文件> 排除指定的文件
-x@<文件列表> 使用指定的列表文件来排除指定的文件
-y 假设全部的询问回应皆为“是”
-z<文件> 从文件读取压缩文件注释

Related pages

Tuples in C# (4.x, 7.0, 7.1)

93 views   0 comments last modified about 4 months ago

What is a tuple? Tuple is an ordered sequence, fixed-size, immutable and of heterogeneous objects. Tuple has been existing in other languages such as F#, Python, Perl and etc. for a long time. It was first introduced into C# from C# 4.0 and has been evolving over time. Since C# 7.1, tuple...

View detail

C# version history and core features

83 views   0 comments last modified about 5 months ago

C# is my favourite programming language and has been evolving overtime. I have been programming with many other languages but C# is always my favourite because it is simple and easy to use. Visual Studio is the most powerful tool I’ve ever used. To me, programming efficiency and peformance are th...

View detail

Invoke Hadoop WebHDFS APIs in .NET Core

143 views   0 comments last modified about 4 months ago

Background Apache doesn't provide native official .NET APIs for Hadoop HDFS. The HTTP REST API supports the complete FileSystem / ...

View detail

Migrating from ASP.NET Core 1.x to ASP.NET Core 2.0 – Issues Continued

654 views   0 comments last modified about 10 months ago

Other related issues are found during my migration. Unable to Change Identity Table Names ...

View detail

LINQ to Teradata

798 views   0 comments last modified about 3 years ago

In my previous post, I demonstrated how to use ADO.NET to connect to Teradata in your OLTP projects.&nbsp; In this sample, I am going to implement the same sample using ADO.NET Entity Model, Entity Framework and LINQ. ...

View detail

.NET中的安全性之数字签名、数字证书、强签名程序集、反编译

1011 views   0 comments last modified about 8 years ago


本文将探讨数字签名、数字证书、强签名程序集、反编译等以及它们在.NET中的运用(一些概念并不局限于.NET在其它技术、平台中也存在)。1.数字签名

View detail

Add comment

Please login first to add comments.  Log in New user?  Register

Comments (0)

No comments yet.