Je sais que cette question a déjà été posée sur Stackoverflow, mais n'a pas pu trouver d'explication. Lorsque j'essaie de lire une chaîne à partir d'un tableau d'octets compressés, j'obtiens une chaîne vide lors de la première tentative, à la seconde j'obtiens la chaîne.StreamReader ReadToEnd() renvoie une chaîne vide à la première tentative
Exemple de code:
public static string Decompress(byte[] gzBuffer)
{
if (gzBuffer == null)
return null;
using (var ms = new MemoryStream(gzBuffer))
{
using (var decompress = new GZipStream(ms, CompressionMode.Decompress))
{
using (var sr = new StreamReader(decompress, Encoding.UTF8))
{
string ret = sr.ReadToEnd();
// this is the extra check that is needed !?
if (ret == "")
ret = sr.ReadToEnd();
return ret;
}
}
}
}
Toutes les suggestions sont appréciés. - Victor Cassel
Je ne pense pas que vous ayez besoin de la vérification, elle semble redondante. – Nick