C# SevenZipSharp压缩和解压文件数量大的时候会很慢

我需要在程序里压缩和解压文件,一开始想到了用Process调用Winrar.exe。但是感觉有非本程序的窗口打开有点别扭,所以找到ICSharpCode.SharpZipLib和SeveZipSharp。

 

我发现用SevenZipSharp处理多文件的时候(压缩4000个文件),运行特别慢。查了官网论坛也有人提到这个问题。看来是还没有解决呢。所以如果要处理多文件,还是用ICSharpCode.SharpZipLib吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 .NET Framework 中的 System.IO.Compression 命名空间来解压文件,同时使用 System.ComponentModel.BackgroundWorker 类来实现解压进度的显示。以下是一个示例代码: ```csharp using System; using System.IO; using System.IO.Compression; using System.ComponentModel; public class Unzipper { private BackgroundWorker worker; public Unzipper(BackgroundWorker worker) { this.worker = worker; } public void Unzip(string zipFilePath, string extractPath) { using (ZipArchive archive = ZipFile.OpenRead(zipFilePath)) { int totalEntries = archive.Entries.Count; int currentEntry = 0; foreach (ZipArchiveEntry entry in archive.Entries) { string entryPath = Path.Combine(extractPath, entry.FullName); worker.ReportProgress((int)((float)currentEntry / totalEntries * 100), entryPath); currentEntry++; if (entry.Name == "") { Directory.CreateDirectory(entryPath); } else { entry.ExtractToFile(entryPath, true); } } } } } ``` 在此示例中,Unzipper 类的 Unzip 方法接受两个参数:压缩文件的路径和解压路径。BackgroundWorker 参数用于报告解压进度。在 Unzip 方法中,我们首先使用 ZipFile.OpenRead 方法打开 zip 文件。然后,我们遍历压缩文件中的每个条目,并为每个条目报告解压进度。最后,我们使用 ZipArchiveEntry.ExtractToFile 方法将条目解压缩到指定的目录。 你可以在 BackgroundWorker 的 ProgressChanged 事件处理程序中来更新 UI,以显示解压进度和当前正在解压缩的文件名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值