2012-04-21 103 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