sharpziplib 进度条解压 tar gz

sharpziplib progressbar to extract targz

我有一个提取 targz 文件的应用程序,我想要一个 ProgressBar 查看提取进度。

但我只有这个:

public void ExtractTGZ(String gzArchiveName, String destFolder) 
{
    Stream inStream = File.OpenRead(gzArchiveName);
    Stream gzipStream = new GZipInputStream(inStream);

    TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
    tarArchive.ExtractContents(destFolder);
    tarArchive.Close();

    gzipStream.Close();
    inStream.Close();
}  

你有什么想法吗?我实际上搜索了如何知道传输的字节数和总字节数。我没有找到关于这个和 targz 文件的信息。

您将无法使用 ExtractContents 来完成。这是一个同步函数,这意味着它会 运行 直到结束才返回,你无法在它 returns.

之前获得它的进度

通常获取反馈的方式是在提取方法中添加一个异步回调函数,然后让提取方法通过该回调异步报告进度。然而,SharpZipLib API 并不直接支持这一点,据我快速浏览文档可以看出。您必须自己创建此功能。

你可以看看 This example on how to control the extraction from the tar or Find inspiration in the implementation of ExtractContents

然后您可以根据 total_entries / processed_entries 或 total_bytes / processed_bytes.

报告进度

至于进行异步回调Take a look here。这不完全是你在做什么,但接受的答案说明了如何使用异步调用。