我有一个方法
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;
}
Run Code Online (Sandbox Code Playgroud)
我有一些GZipped文本作为输入,结果应该是这个文本的字符串表示.问题是该方法返回一个空字符串.让我感到困惑的是,当我在调试模式中执行该方法并到达return语句时,结果变量是一个空字符串但是如果我为decompressed.ReadToEnd()表达式创建一个监视器,它会返回文本.在这一点上我期望的是包含文本的结果变量和评估为空字符串的decompressed.ReadToEnd()表达式.(重新评估decompressed.ReadToEnd()表达式会返回一个空字符串,如预期的那样).
@Edit:我发现在我的情况下, ReadToEnd()返回第二次调用的文本,在第一次调用和第二次调用之后返回空字符串.
必须有一些明显我在这里失踪的东西.
小智 26
我认为你的问题是指针在蒸汽中的位置.每次执行之后ReadToEnd,指针都会设置为结束,这就是您第一次观看它的原因.
运行以下代码之前ReadToEnd将指针设置为开头.
someStream.Seek(0, SeekOrigin.Begin)
| 归档时间: |
|
| 查看次数: |
13590 次 |
| 最近记录: |