StreamReader.ReadToEnd () retornando uma string vazia
Eu tenho um método
private static String DecompressAndDecode(byte[] data)
{
GZipStream decompressor = new GZipStream(new MemoryStream(data), CompressionMode.Decompress);
StreamReader decompressed = new StreamReader(decompressor, Encoding.UTF8);
String result = decompressed.ReadToEnd();
return result;
}
Eu tenho algum texto GZipped como entrada e o resultado deve ser uma representação em String deste texto. O problema é que o método retorna uma string vazia. O que está me intrigando é que, quando passo pelo método no modo de depuração e alcanço a declaração de retorno, a variável result é uma string vazia, mas se eu criar um relógio para a expressão descompactada.ReadToEnd (), ele retornará o texto. O que eu esperaria neste momento é que a variável result contenha o texto e a expressão decompressed.ReadToEnd () avaliada como uma string vazia. (A reavaliação da expressão decompressed.ReadToEnd () retorna uma cadeia vazia conforme o esperado).
@Editar: Eu descobri queNo meu caso ReadToEnd () retorna o textona segunda chamada retornando cadeias vazias na primeira e após a segunda.
Deve haver algo óbvio que estou perdendo aqui.