Je lis un fichier .gz à partir d'une source lente (comme le serveur FTP) et je suis en train de traiter les données reçues immédiatement. Ressemble à quelque chose comme ceci:Progression de l'ordinateur (barre) en utilisant GZipStream
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)
{
...
}
}
Mon problème montre une barre de progression précise. À l'avance, je peux obtenir la taille du fichier .gz compressé, mais je n'ai aucune idée de la taille du contenu non compressé. Lire le fichier ligne par ligne Je sais très bien combien d'octets non compressés j'ai lus, mais je ne sais pas comment cela se rapporte à la taille du fichier compressé.
Alors, y a-t-il un moyen d'obtenir de GZipStream jusqu'à quel point le pointeur de fichier est avancé dans le fichier compressé? J'ai seulement besoin de la position actuelle, la taille du fichier gz je peux aller chercher avant de lire le fichier.
Super, c'était ce que je cherchais! Dommage que le Ftp-Stream ne supporte pas le retour des octets déjà lus! – Sam