C#调用7z实现文件的压缩与解压
作者:農碼一生 时间:2021-06-12 16:12:48
1.关于7z
首先在这里先介绍一下7z压缩软件,7z是一种主流的 压缩格式,它拥有极高的压缩比。在计算机科学中,7z是一种可以使用多种压缩算法进行数据压缩的档案格式。主要有以下特点:
来源且模块化的组件结构
最高的压缩比
强大的AES-256加密
可更改配置的压缩算法
支持操大文件
支持多线程压缩
具有多种压缩文件格式
2.解压缩实现代码
实现对文件的解压缩方法是通过cmd命令,调用7z程式通过cmd命令实现对文件进行解压和压缩的操作,具体实现代码如下:
压缩代码
压缩的cmd命令:"7Z a -tzip " + zipPath + " " + filePath;
public ExecutionResult CompressFile(string filePath, string zipPath)//运行DOS命令
{
ExecutionResult exeRes = new ExecutionResult();
exeRes.Status = true;
try
{
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
string message = "";
string command1 = "c:";
string command2 = @"cd\";
string command3 = @"cd C:\Progra~1\7-Zip";
string command4 = "";
command4 = "7Z a -tzip " + zipPath + " " + filePath;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.StandardInput.WriteLine(command1);
process.StandardInput.WriteLine(command2);
process.StandardInput.WriteLine(command3);
process.StandardInput.WriteLine(command4);
process.StandardInput.WriteLine("exit");
message = process.StandardOutput.ReadToEnd(); //要等压缩完成后才可以来抓取这个压缩文件
process.Close();
if (!message.Contains("Everything is Ok"))
{
exeRes.Status = false;
exeRes.Message = message;
}
else
{
exeRes.Anything = zipPath;
}
}
catch (Exception ex)
{
exeRes.Message = ex.Message;
}
return exeRes;
}
解压代码
解压的cmd命令:"7Z x -tzip " + zipPath + " -o" + filePath + " -y";
public ExecutionResult DeCompressFile( string zipPath, string filePath)//运行DOS命令
{
ExecutionResult exeRes = new ExecutionResult();
exeRes.Status = true;
try
{
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
string message = "";
string command1 = "c:";
string command2 = @"cd\";
string command3 = @"cd C:\Progra~1\7-Zip";
string command4 = "";
command4 = "7Z x -tzip " + zipPath + " -o" + filePath + " -y";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.StandardInput.WriteLine(command1);
process.StandardInput.WriteLine(command2);
process.StandardInput.WriteLine(command3);
process.StandardInput.WriteLine(command4);
process.StandardInput.WriteLine("exit");
//process.WaitForExit();
message = process.StandardOutput.ReadToEnd();//要等压缩完成后才可以来抓取这个压缩文件
process.Close();
if (!message.Contains("Everything is Ok"))
{
exeRes.Status = false;
exeRes.Message = message;
}
else
{
exeRes.Anything = filePath;
}
}
catch (Exception ex)
{
exeRes.Message = ex.Message;
}
return exeRes;
}
来源:https://www.cnblogs.com/wml-it/p/12148778.html
标签:c#,7z,压缩,解压
0
投稿
猜你喜欢
C#读取word中表格数据的方法实现
2023-09-12 22:54:53
WCF实现进程间管道通信Demo分享
2022-10-22 04:20:06
Java 实现判定顺序表中是否包含某个元素(思路详解)
2023-09-11 01:03:04
java oshi如何查看cpu信息
2023-01-06 21:16:39
解决C#获取鼠标相对当前窗口坐标的实现方法
2022-10-07 12:57:57
java(包括springboot)读取resources下文件方式实现
2021-06-03 20:16:06
ComposeDesktop开发桌面端多功能APK工具
2022-02-11 16:57:04
kotlin java 混合代码 maven 打包实现
2023-04-09 13:33:41
Java for循环标签跳转到指定位置的示例详解
2022-10-04 17:52:31
解决mybatis三表连接查询数据重复的问题
2023-09-13 15:24:25
Unity实现图形相交检测
2021-09-16 09:31:01
C#基于QRCode实现动态生成自定义二维码图片功能示例
2023-04-03 04:08:43
C语言中队列的结构和函数接口的使用示例
2022-01-08 06:56:40
详解Spring Data Jpa当属性为Null也更新的完美解决方案
2022-04-13 03:06:06
Springboot Mybatis Plus自动生成工具类详解代码
2022-09-17 12:01:57
深入解析C#设计模式中对桥接模式的具体运用
2023-11-08 21:53:06
java导出数据库的全部表到excel
2023-11-25 09:38:33
Java如何跳出当前多重循环你知道吗
2022-12-17 02:22:17
C# Assembly.Load案例详解
2021-11-06 03:20:33
基于html5+java实现大文件上传实例代码
2023-09-26 02:14:29