StreamReader ReadToEnd () возвращает пустую строку при первой попытке

Я знаю, что этот вопрос задавался ранее в Stackoverflow, но не смог найти объяснения.

Когда я пытаюсь прочитать строку из сжатого массива байтов, я получаю пустую строку с первой попытки, со второй я добился успеха и получил строку.

Пример кода:

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;
            }
        }
    }
}

Все предложения приветствуются. - Виктор Кассель

13
задан Victor Cassel 16 December 2010 в 13:53
поделиться