我正在从一些慢速源(如 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 文件大小。