e){entryTotal=e.Item.Size;info_builde1="提取文件:"e.Item.Key";";}privatevoidarchive_FilePartExtractionBegin(objectsender,FilePartExtractionBeginEventArgse){partTotal=e.Size;info_builde2="分卷:"e.Name";";}privatevoidarchive_CompressedBytesRead(objectsender,CompressedBytesReadEventArgse){stringpercentage=entryTotal.HasValue?CreatePercentage(e.CompressedBytesRead,entryTotal.Value).ToString():"Unknown";info_builde=info_builde1info_builde2"字节:"e.CompressedBytesRead";百分比:"percentage"%";this.CrossThreadCalls(()=>{compress_Info.Text=info_builde;progress[1].Value=int.Parse(percentage)>100||int.Parse(percentage)<0?100:int.Parse(percentage);if(volumes<2)progress[0].Value=progress[1].Value;Application.DoEvents();});}privateintCreatePercentage(longn,longd){return(int)(((double)n/(double)d)*100);}-IMDN开发者社群-imdn.cn"> e){entryTotal=e.Item.Size;info_builde1="提取文件:"e.Item.Key";";}privatevoidarchive_FilePartExtractionBegin(objectsender,FilePartExtractionBeginEventArgse){partTotal=e.Size;info_builde2="分卷:"e.Name";";}privatevoidarchive_CompressedBytesRead(objectsender,CompressedBytesReadEventArgse){stringpercentage=entryTotal.HasValue?CreatePercentage(e.CompressedBytesRead,entryTotal.Value).ToString():"Unknown";info_builde=info_builde1info_builde2"字节:"e.CompressedBytesRead";百分比:"percentage"%";this.CrossThreadCalls(()=>{compress_Info.Text=info_builde;progress[1].Value=int.Parse(percentage)>100||int.Parse(percentage)<0?100:int.Parse(percentage);if(volumes<2)progress[0].Value=progress[1].Value;Application.DoEvents();});}privateintCreatePercentage(longn,longd){return(int)(((double)n/(double)d)*100);} - IMDN开发者社群-imdn.cn">
登录
首页 » C# » 解压缩文件示例(rar、zip、7zip、Gzip、tar...等)

解压缩文件示例(rar、zip、7zip、Gzip、tar...等)

于 2019-07-21 发布
0 266
下载积分: 1 下载次数: 1

代码说明:

本程序是基于 sharpcompress-master 设计的演示程序。开原地址:https://github.com/adamhathcock/sharpcompress。1. 程序主要展示了压缩文件的解压缩,支持的文件类型有:rar、zip、7zip、Gzip、tar......等压缩格式,展示了密码解压、分卷解压、解压进度等功能。2. 不支持“带密码的分卷压缩文件”的解压;无密码分卷压缩、单个带密码文件正常解压。3. 此程序在设计中,对组件源代码进行了修改,与原组件代码对照查看。4、sharpcompress-master组件功能繁多,比如,文件压缩为图片、压缩文件内文件添加删除、更名等等,对照现有的压缩软件,功能均具备,可在代码中查看使用。本示例只是展示了解压缩功能。此程序为识别全部压缩格式,未引用DLL,全部为cs文件,如有错误,自行对照修正。private void Uncompress(string archiveFile, string destinationPath, string password = null) { var archive = ArchiveFactory.Open(archiveFile, new ReaderOptions() { Password = password, LeaveStreamOpen = true }); volumes = archive.Entries.Count(); archive.EntryExtractionBegin = archive_EntryExtractionBegin; archive.FilePartExtractionBegin = archive_FilePartExtractionBegin; archive.CompressedBytesRead = archive_CompressedBytesRead; Task.Run(() => { long order = 0; foreach (var entry in archive.Entries) { if (!entry.IsDirectory) { entry.WriteToDirectory(destinationPath, new ExtractionOptions() { ExtractFullPath = true, Overwrite = true, }); } order ; this.CrossThreadCalls(() => { if (volumes > 1) { progress[0].Value = CreatePercentage(order, volumes); } }); } MessageBox.Show("解压缩任务完成 !"); }); } private void archive_EntryExtractionBegin(object sender, ArchiveExtractionEventArgs e) { entryTotal = e.Item.Size; info_builde1 = "提取文件: " e.Item.Key ";"; } private void archive_FilePartExtractionBegin(object sender, FilePartExtractionBeginEventArgs e) { partTotal = e.Size; info_builde2 = "分卷:" e.Name ";"; } private void archive_CompressedBytesRead(object sender, CompressedBytesReadEventArgs e) { string percentage = entryTotal.HasValue ? CreatePercentage(e.CompressedBytesRead, entryTotal.Value).ToString() : "Unknown"; info_builde = info_builde1 info_builde2 "字节:" e.CompressedBytesRead ";百分比:" percentage "%"; this.CrossThreadCalls(() => { compress_Info.Text = info_builde; progress[1].Value = int.Parse(percentage) > 100 || int.Parse(percentage) < 0 ? 100 : int.Parse(percentage); if (volumes < 2) progress[0].Value = progress[1].Value; Application.DoEvents(); }); } private int CreatePercentage(long n, long d) { return (int)(((double)n / (double)d) * 100); }

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • unity读取Excel
    unity读取Excel
    2020-12-07下载
    积分:1
  • c# 透明panel 示例代码
    c# 透明panel 示例代码
    2015-03-16下载
    积分:1
  • C#json、导出一年的节假日信息获得一年内的365天
    【实例简介】好些时候需要获得中国的法定节假日信息,本例就是获得一个这样的excel
    2021-08-15 00:31:04下载
    积分:1
  • NPOI控源码与实例
    NPOI控件源码与实例
    2016-06-13下载
    积分:1
  • 使用Docx生成word档类及Docx.dll
    Docx生成word文档,可插入图片、表格等
    2014-09-21下载
    积分:1
  • Http连接操作帮助类
     Http连接操作帮助类,模拟post和get请求
    2014-12-09下载
    积分:1
  • Linq操作XML实例源码,添加、删除、修改、查询功能已经实现
    Linq操作XML实例源码,添加、删除、修改、查询功能已经实现
    2013-01-25下载
    积分:1
  • C#操作XML实例,含基本的增删改查询操作
    最基本的xml操作实例,含常用操作方法
    2013-01-20下载
    积分:1
  • C#实现对软加密(根据机器码生成 激活码)
    对软件进行加密。使软件只能在当前电脑上使用,更换电脑后无法使用
    2020-12-12下载
    积分:1
  • Report报表组代码,提建议完善
    参考FastReport和https://www.codeproject.com的一些报表代码,去掉不常用的功能,对常用基本功能进行了设计。报表的编制、预览均自行编写代码没用使用PrintDocument的功能,只是在打印机上调用了PrintDocument。所以你可以灵活的修改界面和增加、去掉功能及调用方式等。程序编写为exe文件,未写为DLL,因为便于调试,有什么建议请留言,修改到位后改写为DLL方式。代码已按照DLL编写了,只要将里面的窗体去掉,改为 :new 窗体,其他不变,就可生成DLL。 原理:按照页头、页脚、内容分为3个栏目。如有数据库字段,内容栏不论位置,紧跟着页头栏,可在“栏目设置”将其最大化,来排列组件位置,非最大化,则根据页头、页脚之间的位置将内容栏按数据库记录顺序填充整页,可将其最大化,每页显示一条记录的多个字段。如报表无数据库字段,则按照内容栏实际位置预览打印。 测试过程,只提供A4纸张的设计,打印参数不做判断,为全部打印,份数1份。运行demo,先打开文件夹内部的 报表.rpt文件,demo1无数据库,直接打开报表,预览、打印demo2、3有数据库,在“数据链接”数据库中填写userdata.mdb,数据表在菜单中选择填写UserInfo后,可预览、打印,否则不能预览打印报表。 右键菜单在报表组件上可执行快捷功能,空白处可执行栏目设置、粘贴、打印预览功能。“打开报表”对话框有记忆功能,打开报表文件时,注意文件夹的选择。  
    2018-10-26下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载