Mam metodęStreamReader.ReadToEnd() wraca pusty ciąg
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;
}
mam jakiś tekst zgzipowanego jako wejście, a wynik ma być reprezentacja String tego tekstu. Problem polega na tym, że metoda zwraca pusty ciąg znaków. Zastanawiające jest to, że kiedy przechodzę przez metodę w trybie debugowania i dochodzę do instrukcji return, zmienna wynikowa jest pustym ciągiem, ale jeśli utworzę zegarek dla wyrażenia decompressed.ReadToEnd(), zwróci mi tekst. To, czego oczekiwałbym w tym momencie, to zmienna wynikowa zawierająca wyrażenie tekstowe i wyrażenie dekompresji.ReadToEnd() oceniające pusty ciąg znaków. (Ponowna ocena wyrażenia decompressed.ReadToEnd() zwraca pusty łańcuch zgodnie z oczekiwaniami).
@Edit: I odkryli, że w moim przypadku ReadToEnd() zwraca tekst na drugim wywołaniu zwrotach pustych strun na pierwsze wezwanie, a po drugie wezwanie.
Musi być coś oczywistego, czego tu brakuje.
Czy kodowanie jest w rzeczywistości UTF8? –
Tak, jest to UTF8. – axk