(C#)使用sharpcompress压缩解压文件(.rar,.zip,tar.bz2,.7z,.tar.gz)

news/2024/2/28 7:39:48

sharpcompress安装方法

使用Nuget搜索sharpcompress,点击安装即可

1、.rar文件解压代码(不支持rar压缩)

using (Stream stream = File.OpenRead(@"C:\Code\sharpcompress.rar"))
{var reader = ReaderFactory.Open(stream);while (reader.MoveToNextEntry()){if (!reader.Entry.IsDirectory){Console.WriteLine(reader.Entry.Key);reader.WriteEntryToDirectory(@"C:\temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });}}
}

2、.zip文件压缩和解压代码

1).zip文件压缩代码

string filesPath = @"C:\Users\Administrator\source\repos\ConsoleApp1\ConsoleApp1";using (var zip  = File.OpenWrite("C:\\test.zip"))using (var zipWriter = WriterFactory.Open(zip, ArchiveType.Zip, CompressionType.Deflate)){//foreach (var filePath in filesList)//{zipWriter.WriteAll(filesPath, "*", SearchOption.AllDirectories);//}}

2).zip文件解压代码

var archive = ArchiveFactory.Open(@"C:\\test.zip");foreach (var entry in archive.Entries){if (!entry.IsDirectory){Console.WriteLine(entry.Key);entry.WriteToDirectory(@"C:\temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });}}

3、.7z文件解压代码(不支持.7z压缩)

var archive = ArchiveFactory.Open(@"F:\Python35-32.7z");foreach (var entry in archive.Entries){if (!entry.IsDirectory){Console.WriteLine(entry.Key);entry.WriteToDirectory(@"C:\temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });}}

4、.tar.gz文件压缩代码

string filesPath = @"C:\Users\Administrator\source\repos\ConsoleApp1\ConsoleApp1";using (var zip  = File.OpenWrite("C:\\test.tar.gz"))using (var zipWriter = WriterFactory.Open(zip, ArchiveType.Tar, CompressionType.GZip)){//foreach (var filePath in filesList)//{zipWriter.WriteAll(filesPath, "*", SearchOption.AllDirectories);//}}

5、.tar.bz2文件压缩代码

using (Stream stream = File.OpenWrite(tarbz2Path))
using (var writer = WriterFactory.Open(stream, ArchiveType.Tar, CompressionType.BZip2))
{writer.WriteAll(filesPath, "*", SearchOption.AllDirectories);
}


http://www.ppmy.cn/news/1260973.html

相关文章

(Note)Chromium浏览器插件

Chromium浏览器插件 1.TamperMonkey Home | Tampermonkey 2.GreasyFork Greasy Fork - 安全、实用的用户脚本大全

【Kubernetes学习之连接集群】利用 kubeconfig 或 secret Token 连接 k8s 集群

参考 通过kubeconfig文件生成证书,用curl访问Kubernetes API server_网络飞鸥的博客-CSDN博客k8s用ServiceAccount Token的方式访问apiserver_kubenetes api 访问token-CSDN博客k8s serviceaccount创建后没有生成对应的secret - SoulChild随笔记参考 | KubernetesK…

QT作业1

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 头文件代码&#xff1a; #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> #include <QLabel> //标签类 #include <QMovie> //动图类 #include <…

【Java系列】函数式接口编程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

298_C++_【base64_64_to_bits函数】Base64是一种用于将二进制数据转换为ASCII字符的编码方式,通常用于在文本协议中传输二进制数据

1、 #include "include/base64.h" static const char base64digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";#define BAD -1

『TypeScript』深入理解变量声明、函数定义、类与接口及泛型

&#x1f4e3;读完这篇文章里你能收获到 了解TypeScript变量声明与类型注解掌握TypeScript函数与方法的使用掌握TypeScript类与接口的使用掌握TypeScript泛型的应用 文章目录 一、变量声明与类型注解1. 变量声明2. 类型注解3. 类型推断 二、函数与方法定义1. 函数定义2. 方法定…

Prometheus 配置文件和标签 Pmsql

1.Prometheus配置文件 Prometheus可以通过命令行或者配置文件的方式对服务进行配置。 命令行方式一般用于不可变的系统参数配置&#xff0c;例如存储位置、要保留在磁盘和内存中的数据量等&#xff1b;配置文件用于定义与数据动态获取相关的配置选项和文件等内容。命令行方式…

【SA8295P 源码分析】137 - 车载以太网协议学习总结(待更新......)

【SA8295P 源码分析】137 - 车载以太网协议学习总结 一、Ethernet 以太网介绍1.1 实效性:AVB(Audio Video Bridging)/ TSN(Time-Sensitive Networking)1.1.1 Synchronization:同步,协议(802.1AS)1.1.2 Latency:低延迟,协议(802.1Qav、802.1Qbu、802.1Qbv、802.1ch、…

Python—KNN分类算法

原文: https://zhuanlan.zhihu.com/p/143092725 1. 概述 KNN 可以说是最简单的分类算法之一&#xff0c;同时&#xff0c;它也是最常用的分类算法之一。注意&#xff1a;KNN 算法是有监督学习中的分类算法&#xff0c;它看起来和另一个机器学习算法 K-means 有点像&#xff0…

【数据结构】字典树(Trie树)算法总结

知识概览 Trie&#xff1a;高效地存储和查找字符串集合的数据结构数字、汉字可以用二进制位来存 例题展示 题目链接 Trie字符串统计&#xff1a; https://www.acwing.com/problem/content/837/ 代码 #include <cstdio>const int N 100010;int son[N][26], cnt[N],…

Reactor实战,创建一个简单的单线程Reactor(理解了就相当于理解了多线程的Reactor)

单线程Reactor package org.example.utils.echo.single;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.*; import java.util.Iterator; import java.util.Set;public class EchoServerReactor implements Runnable{Selector sele…

排序:快速排序(hoare版本)

目录 快速排序&#xff1a; 概念&#xff1a; 动画分析&#xff1a; 代码实现&#xff1a; 代码分析&#xff1a; 代码特性&#xff1a; 常见问题&#xff1a; 快速排序&#xff1a; 概念&#xff1a; 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&a…

【数据结构】手撕排序

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、排序的概念及其运用1.1 排序的概念1.2 常见的算法排序 二、 冒泡排序三、直接插入排…

基于ssm实验室课程管理系统源码和论文

idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 摘 要 随着科学实验规模的不断扩大&#xff0c;实验室课程数量的急剧增加&#xff0c;有关实验室课程的各种信息量也在不断成倍增长。面对庞大的信息量&#xff0c;就需要有…

浅谈https

1.网络传输的安全性 http 协议&#xff1a;不安全&#xff0c;未加密https 协议&#xff1a;安全&#xff0c;对请求报文和响应报文做加密 2.对称加密与非对称加密 2.1 对称加密 特点&#xff1a; 加解密使用 相同 秘钥 高效&#xff0c;适用于大量数据的加密场景 算法公开&a…

软件兼容性测试的测试内容有哪些?

软件兼容性测试是软件开发过程中至关重要的一项测试环节。它是指验证软件在不同平台、操作系统、硬件设备或网络环境下的运行情况&#xff0c;以确保软件在各种环境下都能正常工作并与其他软件或系统相互配合。兼容性测试能够帮助开发者发现和修复可能存在的兼容性问题&#xf…

数据库原理: 笛卡儿积

笛卡儿积&#xff08;Cartesian Product&#xff09;是集合论中的一个概念&#xff0c;也在数据库中的查询操作中经常使用。笛卡儿积是指两个集合&#xff08;或更多集合&#xff09;之间所有可能的组合。如果有两个集合A和B&#xff0c;它们的笛卡儿积记作A B&#xff0c;表示…

JavaSE语法之五:数组的定义与使用(超详解!!!)

文章目录 一、数组的概念1. 什么是数组2. 数组的创建及初始化3. 数组的使用3.1 数组中元素的访问3.2 遍历数组 二、数组是引用类型1. 初始JVM的内存分布2. 基本类型变量与引用变量的区别3. 引用变量4. 认识null 三、数组的应用场景1. 保存数据2. 作为函数的参数2.1 参数传基本类…

多人聊天Java

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…

cmd终端命令控制台使用mysql

管理员权限下开启和关闭mysql服务 net stop mysql net start mysql cmd命令行进入mysql mysql -uroot -p123456 //root用户名&#xff0c;123456密码&#xff0c;没密码则不输入 cmd命令行退出mysql exit // 或者 quit 创建数据库 create database cAuth; // 更加规范的写法是…
最新文章