2013-05-29 30 views
0
try 
{ 
    TextReader reader = new StreamReader(responseStream); 
    gzipBytes = ASCIIEncoding.ASCII.GetBytes(reader.ToString()); 

    MemoryStream ms = new MemoryStream(); 
    // Use the newly created memory stream for the compressed data. 
    outStream = new GZipStream(ms, CompressionMode.Compress, true); 
    outStream.Write(gzipBytes, 0, gzipBytes.Length); 
    // Close the stream. 
} 
catch 
{ 
} 
+0

沒有跡象表明您嘗試寫入responseStream。而且你也沒有提供任何錯誤信息。我不認爲有人能夠以這種方式幫助你。請修改您的帖子,以便人們可以幫助您解決問題。 – nvoigt

+0

'ASCIIEncoding.ASCII.GetBytes(reader.ToString())'幾乎保證不起作用。改用'reader.readToEnd()'。 – sircodesalot

+0

當responseStream放入新的GZipStream(responseStream,CompressionMode.Compress,true);然後它拋出異常「流不可寫」,以避免此異常我已閱讀TextReader中的responseStream,但它的工作不會拋出任何異常。 – huda

回答

0

嘗試了這一點,看看它不爲你工作:

using (Stream inputStream = ...) 
using (MemoryStream outputStream = new MemoryStream()) 
using (GZipStream zipStream = new GZipStream(outputStream, CompressionMode.Compress, true)) 
{ 
    inputStream.CopyTo(zipStream); 
} 

您只需將第一行Stream inputStream = ...替換爲任何輸入流即可,例如:Stream inputStream = File.OpenRead(...)Stream inputStream = new StreamReader(...) ......無論如何。應複製到zipStream並執行壓縮。

此外,using塊是好的。它們釋放非託管資源,而不是讓它們四處浮動,直到垃圾收集器撿起它們。