我正在從一些慢速源(如FTP服務器)讀取.gz文件,並且正在處理接收到的數據。看起來像這樣:使用GZipStream計算進度(bar)
FtpWebResponse response = ftpclientRequest.GetResponse() as FtpWebResponse;
using (Stream ftpStream = response.GetResponseStream())
using (GZipStream unzipped = new GZipStream(ftpStream, CompressionMode.Decompress))
using (StreamReader linereader = new StreamReader(unzipped))
{
String l;
while ((l = linereader.ReadLine()) != null)
{
...
}
}
我的問題是顯示一個準確的進度條。事先我可以得到壓縮的.gz文件大小,但我不知道內容將被解壓縮到多大。 逐行讀取文件我非常清楚讀取了多少個未壓縮的字節,但我不知道這與壓縮文件的大小有什麼關係。
那麼,有沒有辦法從GZipStream中獲取文件指針高級到壓縮文件的距離?我只需要當前位置,即在讀取文件之前可以讀取的gz文件大小。
過度和不必要的使用var關鍵字。使代碼真的不可讀。 – 2009-01-05 11:49:22
'var'當然可以很容易地輸出一個例子,讓編譯器解決它。 – kenny 2009-01-05 12:39:33
對不起,我不明白這將如何幫助我計算出我的gz文件有多遠。 'total'包含未壓縮的進度,這對我沒有任何幫助,因爲我不知道未壓縮時文件有多大。我需要在**壓縮的**字節中知道我的位置。 – Sam 2009-01-05 12:51:20