对不起,如果这是一个noob问题,这是我第一次使用C#。在C中解压缩.gz流#
此代码的目的是检索一个.gz文件,解压缩它并将内容推送到一个字符串中,然后我可以使用它来封送XML。
从服务器请求一个特定的.gz文件后,我将结果发送到一个流,像这样:
HttpWebResponse OauthResponse = (HttpWebResponse)OauthRequest.GetResponse();
Stream stream = OauthResponse.GetResponseStream();
但是,我找不到任何答案,至于如何解压缩的。广州流,只有如何从文件中这样做。所以,我用这节省了进来。广州到本地文件:
using (StreamReader sr = new StreamReader(stream))
{
using (BinaryWriter writer = new BinaryWriter(File.Open("currentSession.gz", FileMode.Create)))
{
writer.Write(sr.ReadToEnd());
}
}
然后试图解压这个新创建的文件:
using (GZipStream instream = new GZipStream(File.OpenRead("currentSession.gz"), CompressionMode.Decompress))
{
using (FileStream outputStream = new FileStream("currentXML.xml", FileMode.Append, FileAccess.Write))
{
int bufferSize = 8192, bytesRead = 0;
byte[] buffer = new byte[bufferSize];
while ((bytesRead = instream.Read(buffer, 0, bufferSize)) > 0)
{
outputStream.Write(buffer, 0, bytesRead);
}
}
}
的目的是,它会创建一个然后可以调用XML文件来将节点编组为一个对象。当我虽然运行它,我得到:
型“System.IO.InvalidDataException”未处理的异常发生在System.dll中
附加信息:幻数的gzip数据头不是 正确。确保你传入一个GZip流。
我的问题是我是否遵循正确的过程,即获取流中的.gz文件,保存它,调用新保存的.gz文件解压缩并保存到XML文件,调用新的.xml然后封送它。如果是这样,我在这里做错了什么。如果没有,是否有办法在gz中获取XML,而无需创建和加载新文件?