對不起,如果這是一個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,而無需創建和加載新文件?