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 290
下载积分: 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 个回复

  • C# 各种路径汇总 实例
    应用程序目录/.net framework目录 等各种路径,不断更新中 
    2020-10-28 16:49:58下载
    积分:1
  • web表单设计器源码
    web表单设计器源码
    2014-05-15下载
    积分:1
  • 西门子PLC s-1200、s-1500通讯
    VB、C#等PC高级语言与西门子PLC(S7-200Smart、S7-1200、S7-1500、S7-300、S7-400等)以太网、串口通讯
    2020-04-24下载
    积分:1
  • ASP.NET实现进度条上传【附源代码下载】
    解释一下这个程序,该程序采用了jquery框架,实现了小文件上传,不超过80Mb,可以在web.config文件中进行相应的配置,但是有个最大值,具体需要查看msdn,下一篇文章我将会实现大文件上传,下一篇文章估计得过段时间,因为接下来这几天我需要忙着去面试。另外,开发环境采用visual studio 2010 .net framework 4.0,运行的时候大家注意一下是否满足要求,好了,下面直入正题。   先来看看实现原理。基本原理:一个页面进行文件上传,另外一个页面去监听这个文件上传了多少。   这里面有两个地方需要解释一下:第一个,如何知道监听的这个文件就是上传的这个文件?实现机制很简单,就是让asp.net产生一个唯一的guid,这个id序号是唯一的,通过ajax取出来赋值给一个隐藏字段;第二个,如何获取guid标志的文件信息?通过asp.net缓存机制实现,上传的过程中,不断的将上传信息往缓存里面写,直到文件上传完成,而在另外一个通过guid获取缓存的信息,信息包括你想要的信息,比如上传了多少字节、消耗了多长时间等。
    2013-02-19下载
    积分:1
  • C# 软著作权源码整工具 源码下载
    软件著作权申请时,需要准备前30页后30页网页源代码。 通过这个软件,直接自动将注释和空行都删除,并且合并成差不多30多页的源代码。
    2017-01-12下载
    积分:1
  • C#读取Rss 并Xml实例下载
    asp.net中 读取远程 rss文件并以xml形式展示出来
    2013-01-04下载
    积分:1
  • NPOI控源码与实例
    NPOI控件源码与实例
    2016-06-13下载
    积分:1
  • Http连接操作帮助类
     Http连接操作帮助类,模拟post和get请求
    2014-12-09下载
    积分:1
  • S19与Hex
    S19文件与HEX文件解析
    2021-05-06下载
    积分:1
  • c# MD5码 比较,检测是否一样(附源码)
    c# 文件MD5码 比较,检测文件是否一样(附源码)
    2014-01-12下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载