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。这不完全是你在做什么,但接受的答案说明了如何使用异步调用。
我有一个提取 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。这不完全是你在做什么,但接受的答案说明了如何使用异步调用。