我有办法
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;
}
我有一些GZipped文本作为输入,结果应该是此文本的String表示形式。问题在于该方法返回一个空字符串。让我感到困惑的是,当我在调试模式下通过方法并到达return语句时,结果变量是一个空字符串,但是如果我创建了decompressed.ReadToEnd()表达式的监视程序,它将返回文本。我现在期望的是结果变量包含文本和评估为空字符串的decompressed.ReadToEnd()表达式。 (重新评估decompressed.ReadToEnd()表达式将按预期返回空字符串)。
@Edit:在我的情况下,我发现ReadToEnd()返回第二个调用的文本,并在第一个调用和第二个调用之后返回空字符串。
我在这里一定缺少一些明显的东西。
最佳答案
我认为您的问题是指针在蒸汽中的位置。每次执行ReadToEnd
后,指针都设置在末尾,这就是为什么您可以第一次观看它。
在ReadToEnd
之前运行以下代码,将指针设置为开头。someStream.Seek(0, SeekOrigin.Begin)
关于.net - StreamReader.ReadToEnd()返回一个空字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2572963/