当前位置: 首页 > news >正文

使用C#在Windows上调用7-zip压缩文件

使用C#在Windows上调用7-zip压缩文件

可以设置输出文件的路径也可以留空,留空则会在压缩文件创建一个同名的.压缩包
可以设置压缩包的密码
可以设置压缩包的加密方式(ASE-256),可以使用LZMA但是加密码会报错
可以设置压缩包的格式(zip),可以使用7z但是加密码会报错
添加了密码最大长度的限制(98个字符,7zip限制的)
在7-ZIP的图形界面可以选择7z格式压缩可以输入中文的密码

 using System;
using System.Diagnostics;namespace 文件的压缩
{internal class Program{private static void Main(string[] args){Console.WriteLine("你好,接下来开始压缩文件");ZipsHelper.CompressedInformation compressedInformation = new ZipsHelper.CompressedInformation(@"E:\压缩文件测试\压缩文件_Orgion\V_1696602827.txt","","",ZipsHelper.CompressedFileType.Zip,ZipsHelper.CompressedPackageEncryptionMode.AES256);//压缩  E:\压缩文件测试\压缩文件_Orgion\V1696602827.txt//到     E:\压缩文件测试\压缩文件_Orgion\V1696602827.zipZipsHelper.DoCompressedFile(compressedInformation);Console.ReadKey();}}/// <summary>/// zip文件压缩/// </summary>public class ZipsHelper{/// <summary>/// 压缩文件/// </summary>public static void DoCompressedFile(CompressedInformation compressedInformation){// 设置7-Zip可执行文件的路径,根据你的安装路径进行修改string sevenZipExePath = @"C:\Program Files\7-Zip\7z.exe";if (!System.IO.File.Exists(sevenZipExePath)){Console.WriteLine($"未能找到7z.exe ,请检查路径,当前路径是:{sevenZipExePath}");return;}if (compressedInformation.Password.Length > 98){Console.WriteLine($"压缩取消,密码长度过长,最大长度是98,当前长度是:{compressedInformation.Password.Length}。");return;}string encryptionMethod;//压缩包的加密方式if (compressedInformation.CompressedPackageEncryptionMode == CompressedPackageEncryptionMode.AES256){encryptionMethod = "-mem=AES256";}//else if (compressedInformation.CompressedPackageEncryptionMode == CompressedPackageEncryptionMode.LZMA)//{//encryptionMethod = "-mhe=on -m0=BCJ2 -m1=LZMA2 -m2=LZMA2 -m3=LZMA2 -mb0:1 -mb0s1:2 -mb0s2:3";//}else{encryptionMethod = "-mem=AES256";}string format;//设置压缩包的格式if (compressedInformation.CompressedFileType == CompressedFileType.Zip){compressedInformation.CompressedFilePath += ".zip";//添加压缩包的文件后缀format = "zip";}else{format = "7z";}string arguments;//压缩的参数//构建7-Zip命令行参数 if (compressedInformation.Password == "")//当选择了压缩的加密方式但是密码为空的时候不能压缩{arguments = $"a -t{format} \"{compressedInformation.CompressedFilePath}\" \"{compressedInformation.FilePathToCompress}\"";}else{arguments = $"a -t{format} \"{compressedInformation.CompressedFilePath}\" \"{compressedInformation.FilePathToCompress}\" {encryptionMethod} -p{compressedInformation.Password}";}Console.WriteLine(arguments);// 创建一个新的进程来运行7-ZipProcess process = new Process();process.StartInfo.FileName = sevenZipExePath;process.StartInfo.Arguments = arguments;process.StartInfo.UseShellExecute = false;process.StartInfo.RedirectStandardOutput = true;process.StartInfo.RedirectStandardError = true;process.StartInfo.CreateNoWindow = true;// 启动7-Zip进程并等待其完成process.Start();process.WaitForExit();// 处理输出结果string output = process.StandardOutput.ReadToEnd();string error = process.StandardError.ReadToEnd();if (string.IsNullOrEmpty(error)){Console.WriteLine("文件压缩成功!");}else{Console.WriteLine("文件压缩失败,错误信息:" + error);}Console.WriteLine();Console.WriteLine();Console.WriteLine();Console.WriteLine();Console.WriteLine(output);}/// <summary>/// 压缩包类型/// </summary>public enum CompressedFileType{Zip = 1,//  _7Z = 2}/// <summary>/// 压缩包加密格式/// </summary>public enum CompressedPackageEncryptionMode{AES256,//  LZMA,}public class CompressedInformation{/// <summary>/// 压缩文件路径/// </summary>private string filePathToCompress;/// <summary>/// 输出文件路径/// </summary>private string compressedFilePath;/// <summary>/// 密码/// </summary>private string password;/// <summary>/// 压缩包类型/// </summary>private CompressedFileType compressedFileType;/// <summary>///  压缩包加密格式/// </summary>private CompressedPackageEncryptionMode compressedPackageEncryptionMode;public string FilePathToCompress { get => filePathToCompress; set => filePathToCompress = value; }public string CompressedFilePath { get => compressedFilePath; set => compressedFilePath = value; }public string Password { get => password; set => password = value; }public CompressedFileType CompressedFileType { get => compressedFileType; set => compressedFileType = value; }public CompressedPackageEncryptionMode CompressedPackageEncryptionMode { get => compressedPackageEncryptionMode; set => compressedPackageEncryptionMode = value; }/// <summary>/// 压缩命令参数/// </summary>/// <param name="filePathToCompress">压缩文件路径</param>/// <param name="compressedFilePath">压缩包输出路径</param>/// <param name="password">密码</param>/// <param name="compressedFileType">压缩包格式</param>/// <param name="compressedPackageEncryptionMode">压缩包加密方式</param>public CompressedInformation(string filePathToCompress,string compressedFilePath = "",string password = "",CompressedFileType compressedFileType = CompressedFileType.Zip,CompressedPackageEncryptionMode compressedPackageEncryptionMode = CompressedPackageEncryptionMode.AES256){this.FilePathToCompress = filePathToCompress;this.CompressedFilePath = compressedFilePath;this.Password = password;this.CompressedFileType = compressedFileType;this.CompressedPackageEncryptionMode = compressedPackageEncryptionMode;if (compressedFilePath == ""){GetFileNameAndExtension(filePathToCompress, out compressedFilePath);this.CompressedFilePath = compressedFilePath;}}public static void GetFileNameAndExtension(string filePath, out string pathWithoutExtension){pathWithoutExtension = System.IO.Path.ChangeExtension(filePath, null); // 去除文件后缀}}}}

相关文章:

使用C#在Windows上调用7-zip压缩文件

使用C#在Windows上调用7-zip压缩文件 可以设置输出文件的路径也可以留空&#xff0c;留空则会在压缩文件创建一个同名的.压缩包 可以设置压缩包的密码 可以设置压缩包的加密方式(ASE-256),可以使用LZMA但是加密码会报错 可以设置压缩包的格式(zip)&#xff0c;可以使用7z但是加…...

京东数据平台:2023年Q3季度黄金市场数据分析

继9月国内黄金市场持续上涨后&#xff0c;进入10月中下旬后&#xff0c;黄金行情再度反转&#xff0c;多家品牌金饰价格再次突破600元/克&#xff0c;达到611元/克。 今年以来&#xff0c;黄金行情不断走俏&#xff0c;销售市场也有明显增长。根据鲸参谋平台的数据显示&#xf…...

https原理

首先说一下几个概念&#xff1a;对称加密、非对称加密 对称加密&#xff1a; 客户端和服务端使用同一个秘钥&#xff0c;分两种情况&#xff1a; 1、所有的客户端和服务端使用同一个秘钥&#xff0c;这个秘钥被泄漏后数据不再安全 2、每个客户端生成一个秘钥&…...

FFmpeg直播能力更新计划与新版本发布

// 编者按&#xff1a;客户端作为直接面向用户大众的接口&#xff0c;随着技术的发展进化与时俱进&#xff0c;实现更好的服务是十分必要的。FFmpeg作为最受欢迎的视频和图像处理开源软件&#xff0c;被相关行业的大量用户青睐&#xff0c;而随着HEVC标准的发布到广泛使用&am…...

面试算法55:二叉搜索树迭代器

题目 请实现二叉搜索树的迭代器BSTIterator&#xff0c;它主要有如下3个函数。 构造函数&#xff1a;输入二叉搜索树的根节点初始化该迭代器。函数next&#xff1a;返回二叉搜索树中下一个最小的节点的值。函数hasNext&#xff1a;返回二叉搜索树是否还有下一个节点。 分析 …...

Linux Crontab 定时任务

crond 服务 Linux 通过 crond 服务来支持 crontab。 查看 crond 服务是否已经安装 输入下面命令确认 crond 服务是否已安装。 systemctl list-unit-files | grep crond 如果为 enabled&#xff0c;表示服务正运行。 crontab 文件 crontab 要执行的定时任务都被保存在 /etc…...

HiveSQL高级进阶技巧

目录 1.删除2.更新&#xff1a;3.行转列&#xff1a;4.列转行&#xff1a;5.分析函数&#xff1a;6.多维分析7.数据倾斜groupby&#xff1a;join&#xff1a; 掌握下面的技巧&#xff0c;你的SQL水平将有一个质的提升&#xff01; 1.删除 正常hive删除操作基本都是覆盖原数据&…...

【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用

【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用 文章目录 一、前言二、AnimationController 简介三、AnimationController 的主要功能四、Ticker 提供者五、AnimationController 的生命周期六、与 AnimationController 一起使用的 Future七、实际业务…...

安装富文本组件

安装vue-ueditor-wrap3.x&#xff1a; vue-ueditor-wrap3.x&#xff1a;一个“包装”了 UEditor 的 Vue 组件&#xff0c;支持通过 v-model 来绑定富文本编辑器的内容&#xff0c;让 UEditor 的使用简单到像 Input 框一样。省去了初始化 UEditor、手动调用 getContent&#xff…...

Tomcat下载地址(详细)

Apache Tomcat - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi2.找到Archives 3.选择下载的把版本 4.选择具体下载那个版本 5. 6.一般选择tar.gz结尾的压缩包...

领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统

领星ERP&#xff08;LINGXING&#xff09;是一款专业的一站式亚马逊管理系统&#xff0c;帮助卖家构建完整的数据化运营闭环。&#xff0c;致力于为跨境电商卖家提供精细化运营和业财一体化的解决方案。 官网&#xff1a;https://erp.lingxing.com 集简云无代码集成平台&…...

Django实战项目-学习任务系统-自定义URL拦截器

接着上期代码框架&#xff0c;6个主要功能基本实现&#xff0c;剩下的就是细节点的完善优化了。 首先增加URL拦截器&#xff0c;你不会希望没有登录用户就可以进入用户主页各种功能的&#xff0c;所以增加URL拦截器可以解决这个问题。 Django框架本身也有URL拦截器&#xff0…...

[已解决]该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系。

问题 调整hvie 的参数后导致该主机与 Cloudera Manager Server 失去联系的时间过长 思路 主机离家出走了&#xff01; 出现问题后立马参数修改回来&#xff1b; 但是还是发现有这样的报错&#xff1a; 网上百度&#xff0c;各种操作&#xff0c;大概总结为2点&#xff1a…...

通过在Z平面放置零极点的来设计数字滤波器

文章来源地址&#xff1a;https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求&#xff1a;设计一款高通滤波器&#xff0c;用在音频信号处理过程中&#xff0c;滤掉100Hz以下的信号。 实现方法&#xff1a;通过在Z平面放置零极点的来设…...

linux环境docker部署nginx对生产日志按日切割并压缩处理

linux环境docker部署nginx对生产日志按日切割并压缩处理 1、脚本文件 # 创建脚本文件 mkdir log_slice_task.sh # 编辑脚本文件 vim log_slice_task.sh#! /bin/bash # 定时切割日志脚本 LOG_ACCESS_FILE"/日志文件路径/access.log" LOG_FAIL_FILE"/日志文件路…...

【Spring Boot】发送邮件功能

发送邮件功能 一.pom.xml文件添加邮件依赖二.发送邮件信息&#xff08;1&#xff09;固定配置在application.yml&#xff08;2&#xff09;发送邮箱配成活&#xff08;3&#xff09;底层发送邮件方法&#xff08;4&#xff09;QQ邮箱开通smtp服务&#xff08;5&#xff09;网易…...

ELK问题整理

ELK问题整理 1、logstash启动报错 $ journalctl -xe | grep logstash Sep 13 16:37:23 am02 logstash[298460]: could not find java; set JAVA_HOME or ensure java is in PATH Sep 13 16:37:23 am02 systemd[1]: logstash.service: main process exited, codeexited, sta…...

《黑客帝国:破解编程密码》——探索编程世界的奥秘

文章目录 前言黑客帝国代码雨UbuntuLinux世界的奥秘如何在Ubuntu中查看系统信息科普推荐书籍后记 前言 在电影《黑客帝国》问世后&#xff0c;它不仅带来了震撼视觉体验&#xff0c;更在技术和编程领域产生了深远的影响。这部电影&#xff0c;让人们对计算机和编程的认识进一步…...

【优选算法系列】【专题六模拟】第一节.1576. 替换所有的问号和495. 提莫攻击

文章目录 前言一、替换所有的问号 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写二、提莫攻击 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 一、替换所有的问号 1.1…...

路由器基础(十二):IPSEC VPN配置

一、IPSec VPN基本知识 完整的IPSec协议由加密、摘要、对称密钥交换、安全协议四个部分组成。 两台路由器要建立IPSecVPN连接&#xff0c;就需要保证各自采用加密、摘要、对称密钥 交换、安全协议的参数一致。但是IPSec协议并没有确保这些参数一致的手段。 同时&#xff0c;IP…...

柔性电力系统中油浸式变压器的最佳老化极限研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。 &#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &…...

Git提交规范自动化:Husky与Commitlint提升团队协作效率

1. 项目概述&#xff1a;一个被低估的开发者效率神器 如果你和我一样&#xff0c;每天都要在终端里敲下几十次 git commit -m “fix: xxx” &#xff0c;并且每次都要纠结于提交信息的格式、规范&#xff0c;甚至因为一个拼写错误而不得不重新修改提交&#xff0c;那么你一定…...

Mzmine 4.4.3 安装教程

软件介绍MZmine是一款开源的质谱数据处理平台&#xff0c;主要用于液相色谱-质谱&#xff08;LC-MS&#xff09;等数据的分析&#xff0c;其核心功能包括原始数据导入、色谱峰检测与去卷积、跨样品峰对齐、化合物识别&#xff08;通过与数据库比对&#xff09;以及结果可视化&a…...

Taotoken的Token Plan套餐相比按量计费能为长期项目节省多少

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken的Token Plan套餐相比按量计费能为长期项目节省多少 对于需要长期、稳定调用大模型API的项目而言&#xff0c;成本的可预测…...

告别臃肿软件!OmenSuperHub:惠普暗影精灵的纯净硬件控制神器

告别臃肿软件&#xff01;OmenSuperHub&#xff1a;惠普暗影精灵的纯净硬件控制神器 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 厌倦了官方Omen Gamin…...

LyricsX终极指南:如何在macOS上免费获得完美歌词同步体验

LyricsX终极指南&#xff1a;如何在macOS上免费获得完美歌词同步体验 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 你是否厌倦了在不同音乐播放器间切换时手动搜索歌词&#xff1f;Lyr…...

终极HiveWE魔兽地图编辑器:从新手到高手的完整指南

终极HiveWE魔兽地图编辑器&#xff1a;从新手到高手的完整指南 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版地图编辑器缓慢的加载速度和繁琐的操作而烦恼吗&#xff1f;HiveWE魔兽…...

基于NUC980开发板的嵌入式国学唐诗学习机全栈开发实践

1. 项目概述&#xff1a;当嵌入式开发板遇上国学经典最近在捣鼓一块NUC980开发板&#xff0c;具体型号是NK-980IoT。这板子性能不错&#xff0c;接口也丰富&#xff0c;但总感觉拿它跑个简单的网络服务或者做个数据采集有点“大材小用”。正好家里小朋友开始背唐诗&#xff0c;…...

SoC与SoM:硬件开发的效率革命与双刃剑效应

1. 项目概述&#xff1a;当“系统”成为商品从业十几年&#xff0c;从画第一块51单片机的板子&#xff0c;到参与设计复杂的通信基站&#xff0c;我亲眼见证了硬件开发模式的剧变。如果说早些年我们还在为如何把CPU、内存、Flash、各种接口控制器塞进一块PCB而绞尽脑汁&#xf…...

MIMO AONN架构:量子干涉实现超低功耗光学神经网络

1. MIMO AONN架构的核心价值光学神经网络&#xff08;AONN&#xff09;正在突破传统电子计算的物理极限。在传统电子神经网络中&#xff0c;非线性激活函数需要消耗大量能量进行电子-光子转换&#xff0c;而基于量子干涉的光学非线性机制可以直接在光域实现这一关键操作。我们实…...