【转】使用SevenZipSharp压缩、解压文件
引用
下载之后引用“SevenZipSharp.dll”至项目中,然后将“7z.dll”放到bin目录下,或者这样引用:SevenZipCompressor.SetLibraryPath("c:\\7z.dll");//引用7Z.dll
因为SevenZipSharp本身无法独立工作,需要使用7z.dll来配合工作。
class Program
{
static void Main(string[] args)
{
// 指定7z动态库文件路径,默认是"7z.dll"
SevenZipBase.SetLibraryPath("7za.dll"); var compressor = new SevenZipCompressor();
// 可以在构造时指定临时文件夹
//var compressor = new SevenZipCompressor("Temp"); // 打印临时文件夹路径
Console.WriteLine(compressor.TempFolderPath); // 设置压缩等级
compressor.CompressionLevel = CompressionLevel.Normal; // 指定压缩包格式,默认为7z。
// 如果使用的7za.dll则只能使用7z格式。
compressor.ArchiveFormat = OutArchiveFormat.SevenZip; // 是否保持目录结构,默认为true。
compressor.DirectoryStructure = true; // 是否包含空目录,默认true。
compressor.IncludeEmptyDirectories = true; // 压缩目录时是否使用顶层目录,默认false
compressor.PreserveDirectoryRoot = false; // 加密7z头,默认false
compressor.EncryptHeaders = false; // 文件加密算法
compressor.ZipEncryptionMethod = ZipEncryptionMethod.ZipCrypto; // 尽快压缩(不会触发*Started事件,仅触发*Finished事件)
compressor.FastCompression = false; // 单个文件开始压缩
compressor.FileCompressionStarted += (sender, eventArgs) =>
{
Console.WriteLine($"正在压缩:{eventArgs.FileName}");
Console.WriteLine($"进度:{eventArgs.PercentDone}%");
}; // 单个文件压缩完成时
compressor.FileCompressionFinished += (sender, eventArgs) =>
{
Console.WriteLine("FileCompressionFinished");
}; compressor.Compressing += (sender, eventArgs) =>
{
Console.WriteLine(eventArgs.PercentDelta);
Console.WriteLine(eventArgs.PercentDone);
}; // 压缩完成
compressor.CompressionFinished += (sender, eventArgs) =>
{
Console.WriteLine("CompressionFinished");
}; // 添加文件
var baseDir = AppDomain.CurrentDomain.BaseDirectory;
var files = new string[] {$"{baseDir}123.txt", $"{baseDir}456.txt"};
compressor.CompressFiles("Files.7z", files); // 添加目录下的所有文件
compressor.CompressDirectory($"{baseDir}Dir", "Dir.7z"); Console.ReadKey();
}
}
解压缩
class Program
{
static void Main(string[] args)
{
// 指定7z动态库文件路径,默认是"7z.dll"
SevenZipBase.SetLibraryPath("7za.dll"); var extractor = new SevenZipExtractor("Dir.7z"); extractor.Extracting += (sender, eventArgs) =>
{
Console.WriteLine("OnExtracting");
}; // 文件数量(文件夹也算)
Console.WriteLine(extractor.FilesCount); // 压缩包字节数
Console.WriteLine(extractor.PackedSize); // 压缩文件属性
foreach (var fileProp in extractor.ArchiveProperties)
{
Console.WriteLine(fileProp.ToString());
} // 遍历文件名
foreach (var fileName in extractor.ArchiveFileNames)
{
Console.WriteLine(fileName);
} // 遍历文件数据
foreach (var fileData in extractor.ArchiveFileData)
{
Console.WriteLine(fileData.ToString());
} // 是否使用的固实压缩
Console.WriteLine(extractor.IsSolid); // 解压后的大小
Console.WriteLine(extractor.UnpackedSize); extractor.ExtractArchive("Unpack"); Console.ReadKey();
}
}
注意事项
【转】使用SevenZipSharp压缩、解压文件的更多相关文章
- 通过SharpZipLib来压缩解压文件
在项目开发中,一些比较常用的功能就是压缩解压文件了,其实类似的方法有许多 ,现将通过第三方类库SharpZipLib来压缩解压文件的方法介绍如下,主要目的是方便以后自己阅读,当然可以帮到有需要的朋友更 ...
- 使用SevenZipSharp压缩/解压7z格式
7z格式采用的LZMA算法,号称具有现今最高压缩率.笔者在nuget上搜索7z,在搜索结果中最终选择了SevenZipSharp来进行压缩/解压.不得不说,SevenZipSharp的API设计得非常 ...
- 【转载】.NET压缩/解压文件/夹组件
转自:http://www.cnblogs.com/asxinyu/archive/2013/03/05/2943696.html 阅读目录 1.前言 2.关于压缩格式和算法的基础 3.几种常见的.N ...
- .NET使用ICSharpCode.SharpZipLib压缩/解压文件
SharpZipLib是国外开源加压解压库,可以方便的对文件进行加压/解压 1.下载ICSharpCode.SharpZipLib.dll,并复制到bin目录下 http://www.icsharpc ...
- huffman压缩解压文件【代码】
距离上次写完哈夫曼编码已经过去一周了,这一周都在写huffman压缩解压,哎,在很多小错误上浪费了很多时间调bug.其实这个程序的最关键部分不是我自己想的,而是借鉴了某位园友的代码,但是,无论如何,自 ...
- C#使用SharpZipLib压缩解压文件
#region 加压解压方法 /// <summary> /// 功能:压缩文件(暂时只压缩文件夹下一级目录中的文件,文件夹及其子级被忽略) /// </summary> // ...
- linux压缩解压文件
首先进入文件夹 cd /home/ftp2/1520/web 压缩方法一:压缩web下的888.com网站 zip -r 888.com.zip888.com 压缩方法二:将当前目录下的所有文件和文件 ...
- Freebsd下压缩解压文件详解
压缩篇: 把/usr/webgames目录下的文件打包.命名为bak.tar.gz 放到/usr/db-bak目录里 下面命令可以在任意目录执行.无视当前目录和将要存放文件的目录.tar -zcvf ...
- 跨平台的zip文件压缩处理,支持压缩解压文件夹
根据minizip改写的模块,需要zlib支持 输出的接口: #define RG_ZIP_FILE_REPLACE 0 #define RG_ZIP_FILE_APPEND 1 //压缩文件夹目录, ...
- tar压缩解压文件
查看visualization1.5.tar.gz 压缩包里面的内容: $ tar -tf visualization1.5.tar.gz 解压指定文件JavascriptVisualRelease/ ...
随机推荐
- 洛谷 P1110 [ZJOI2007]报表统计 解题报告
P1110 [ZJOI2007]报表统计 题目描述 \(Q\)的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小\(Q\)希望可以帮妈妈分担一些工作,作为她的生日礼物之一. 经过仔细 ...
- Haproxy Mysql cluster 高可用Mysql集群
-----client-----------haproxy---------mysql1----------mysql2------192.168.1.250 192.168.1.1 192.168. ...
- C# 数组&集合&泛型集合
一.数组 必须规定类型,必须规定长度: 1.定义 int[ ] i = new int[5]; int[] j = new int[]{1,2,3,4,5}; 2.数组的遍历: Console.Wr ...
- 【洛谷P2261】余数求和
题目大意:给定 n, k,求\(\sum\limits_{i=1}^n k\%n\) 的值. 题解:除法分块思想的应用. \(x\%y=x-y\lfloor {x\over y}\rfloor\),因 ...
- oi程序提交注意:bool
比如我一个程序用了bool类型(#include<stdbool.h>) 在poj以c的方式提交不通过显示Compile Error,而用gcc的方式提交通过了, 也许其它的#includ ...
- 在VS2010中使用Git【图文】转
在之前的一片博客<Windows 下使用Git管理Github项目>中简单介绍了在Windows环境中使用Git管理Github项目,但是是使用命令行来进行操作的,本文将简单介绍下在VS2 ...
- HikariCP和spring-boot-devtools了解
HikariCP的学习: 转:https://blog.csdn.net/clementad/article/details/46928621 spring data devtool的学习: 转:ht ...
- 【题解】亚瑟王 HNOI 2015 BZOJ 4008 概率 期望 动态规划
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4008 一道不简单的概率和期望dp题 根据期望的线性性质,容易想到,可以算出每张卡的期望伤害, ...
- InfluxDB、grafana、collect部署监控(centos6.8)
collect部署 1.安装 yum install collectd -y 2.配置/etc/collectd.conf LoadPlugin network <Plugin network& ...
- 搭建Telnet服务器
搭建Telnet服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 可能大家都知道现在已经很少有人用TELNET服务器, 因为它传输数据是以明文的方式,我们很容易通过抓包软件讲数 ...