【转】使用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/ ...
随机推荐
- [luogu1373]小a和uim之大逃离【动态规划】
传送门:https://www.luogu.org/problemnew/show/P1373 定义状态是:\(f[i][j][h][0..1]\)表示在\([i,j]\)两个人相差为h,让某一个人走 ...
- 最长上升子序列LIS(51nod1134)
1134 最长递增子序列 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递 ...
- WebLogic安装及部署
安装(输入命令打开安装窗口) 打开命令终端,cd 到你wls1036_generic.jar存放的目录下 在终端输入:java -Dspace.detection=false -jar wls1036 ...
- Python(四)——PyCharm的安装和使用
python开发IDE: #专业版 #不要汉化 快捷键:Ctrl + ? = 整体注释
- Linux运行Java出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错
在运行如下程序时出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错: java ...
- Django 日志配置按日期滚动
记录下Django关于日期的配置,以及如何根据日期滚动切割日志的问题. 配置的源码在githun上 https://github.com/blackmatrix7/django-examples/tr ...
- frp源码剖析-frp中的log模块
前言&引入 一个好的log模块可以帮助我们排错,分析,统计 一般来说log中需要有时间.栈信息(比如说文件名行号等),这些东西一般某些底层log模块已经帮我们做好了.但在业务中还有很多我们需要 ...
- Linux命令之rmdir
rmdir命令 用处:删除文件夹 用法:在终端中输入rmdir加上要删除的文件夹的名字 示例: (我要删除shuyunquan这个文件夹)
- js格式化input输入框内容(每几位分一组,并使用特定字符分隔)
<html> <head> <title></title> </head> <body> <input id=" ...
- C语言指针详解(经典,非常详细)
前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其 ...