【转】使用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/ ...
随机推荐
- USACO 好题汇总
背景 这里主要是用来针对USACO上的题目的二次汇总,因为我在刷题的过程中,有的题目我是可以很快想到解决方案的,对于这种题目,就没有必要深究了.但是有一些题目对于我来说还是有一些挑战的,可能用朴素的算 ...
- 本地Git与GitHub服务器建立连接(SSH方式通信)
简介 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要 ...
- Android Selector 与 Shape 基本用法
分类: Android2011-07-19 11:07 7513人阅读 评论(4) 收藏 举报 androidencodingbutton测试c 1:Selector drawable的item中可以 ...
- 【洛谷P5018】对称二叉树
题目大意:定义对称二叉树为每个节点的左右子树交换后与原二叉树仍同构的二叉树,求给定的二叉树的最大对称二叉子树的大小. 代码如下 #include <bits/stdc++.h> using ...
- ActiveMQ集群简单测试+eclipse Zookeeper 插件 + 负载均衡
ActiveMQ集群搭建好之后,接下来就该测试一下了. 一.先安装Zookeeper 的eclipse插件吧. 1. 打开 eclipse, Help -> Install New Softwa ...
- getComponent()与getSource()
Component[] items = 父控件.getComponents(); 获取父控件里的控件,返回Component类的数组.如panel中的许多buttone.getSource() 获取发 ...
- python---一个简单的socket
server端: 1 创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) #family参数代表地址家族,可为 ...
- request请求地址
1.String contextPath = httpServletRequest.getServletContext().getContextPath(); /项目名称 2.String conte ...
- js位操作
1.&(与) 都是1才是1 例如:14&15 (14 二进制 1110 15 二进制 1111 &与的结果 1110 ---->结果14) (14& ...
- shell脚本中判断上一个命令是否执行成功
shell脚本中判断上一个命令是否执行成功 shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败.结合if-else语句实现判断上一个命令是否执行成功. 示例 ...