我正在从一些缓慢的源(如FTP服务器)读取一个.gz文件,并立即处理接收到的数据。看起来像这样:
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 文件大小可以在读取文件之前获取。