2012-04-21 765 views
0

我将如何显示在SharpZipLib中压缩的进度?
我正在开发一个将许多文件压缩到单个zip文件的小应用程序。 它可能需要一段时间才能完成,可能会有一个进度条显示压缩的进度,那么有没有办法知道在SharpZipLib中压缩了多少?使用SharpZipLib并获取进度状态?

回答

0

是的,你可以看到输出流的大小压缩了多少,但不足以显示进度条,你也应该知道输出流最终会有多大,当然你也可以事先不知道。

荏苒单个文件时,您可以衡量进步党,并通过文件的大小做proportionaly,一个文件移动进度由(size_of_file/total_size_of_all_files) * 100

例如百分比让我们说,你有3个文件:

file1.bin 1000 kb 
file2.bin 500 kb 
file3.bin 200 kb 

第一个文件压缩后的移动进度为59%,第二个文件移动后为29%到88%,第三个到100%之后。

+0

我认为这是我的应用程序的意思解决方案,因为它将会是很多小文件,无论它压缩多少文件都没关系。 – 2012-04-22 00:11:16

+0

是的,我认为进度条在这种情况下会顺利,顺便说一句。考虑转移到DotNetZip,它更容易使用然后SharpZipLib – 2012-04-22 00:27:31

+0

ummm真的!我还是新来的zip东西,一些建议我使用SharpZipLib! 看看这个问题http://stackoverflow.com/questions/10263829/which-compression-type-should-i-choose-in-sharpziplib#comment13197644_10263829 – 2012-04-22 00:50:06

1

如果您使用DotNetZip,则会有一个SaveProgress事件,告诉您已压缩了多少个字节。

DotNetZip SDK中有代码示例显示如何使用它。

+0

DotNetZip有不同的类型,如TAR,GZIP,BZIP2 ...? – 2012-04-22 00:55:52

+0

不是焦油。 Zip,GZIP,BZIP2。但进度事件是特定于Zip格式的。 – Cheeso 2012-04-22 01:47:00