Wiem, że to pytanie zostało wcześniej zadane na Stackoverflow, ale nie można znaleźć wyjaśnienia.StreamReader ReadToEnd() zwraca pusty ciąg przy pierwszej próbie
Kiedy próbuję odczytać ciąg ze skompresowanej tablicy bajtów, otrzymuję pusty ciąg przy pierwszej próbie, w drugim mam i otrzymuję ciąg.
przykładem Kod:
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;
}
}
}
}
Wszystkie sugestie są mile widziane. - Victor Cassel
Nie sądzę, że potrzebujesz czeku, wygląda na zbędny. – Nick