C# GZipStream 转换为字符串

9

我需要一种方法将GZipStream写入字符串。

我正在使用:

GZipStream Decompress = new GZipStream(inFile, CompressionMode.Decompress)

我尝试了几种方法,但是想不出来。 有人有什么想法吗?

非常感谢, Brett


可能是重复的问题:如何从MemoryStream获取字符串? - Steven Sudit
当我使用: var sr = new StreamReader(ms); var myStr = sr.ReadToEnd(); 时,字符串返回为空。我在将GZipStream转换为MemoryStream时是否漏掉了什么? - Brett
如果您的inFile始终是文本文件,则@Steven建议的解决方案/链接将起作用。如果格式不同,则只能使用数据的bade64表示。 - ajay_whiz
1个回答

26
你需要解压缩一个 GZipStream,因此你需要从里面读取数据。最简单的方法是使用一个 StreamReader 来包装 GZipStream,该类具有一个 ReadToEnd 方法,返回一个字符串。

例如:

string res;
using (var decompress = new GZipStream(inFile, CompressionMode.Decompress))
using (var sr = new StreamReader(decompress)) {
  res = sr.ReadToEnd();
}

(using语句确保inFile被关闭,并释放任何其他资源。)

NB 这假定inFile包含以UTF-8或UTF-16编码的文本。二进制内容或其他文本编码可能会导致问题(您可以使用不同的StreamReader构造函数覆盖编码)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接