2010-08-12 109 views
5

我需要一種方法來寫一個字符串的GZipStream。C#GZipStream字符串

我使用:

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

我嘗試了好幾種方法,但不能弄明白。 有沒有人有任何想法?

非常感謝, 佈雷特

+0

可能重複的[你如何從一個MemoryStream獲取字符串?](http://stackoverflow.com/questions/78181/how-do-you-get-a-string-from-a-memorystream) – 2010-08-12 15:11:20

+0

當我使用: var sr = new StreamReader(ms); var myStr = sr.ReadToEnd(); 字符串回來空。我可能會錯過將GZipStream轉換爲MemoryStream? – Brett 2010-08-12 15:13:54

+0

如果您的inFile始終是一個文本文件,那麼@Steven建議的解決方案/鏈接將起作用。它的格式是不同的,那麼你只能有一個bade64的數據表示。 – 2010-08-12 15:17:38

回答

20

你有一個解壓GZipStream,所以你需要從中讀取數據。最簡單的方法是將GZipStream換成StreamReader,其中ReadToEnd方法返回一個字符串。

喜歡的東西:

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

using報表確保​​被關閉,任何其他資源被釋放。)

NB這並假設​​包含文本UTF-8編碼或UTF -16。二進制內容或其他文本編碼可能會導致問題(您可以使用不同的StreamReader構造函數覆蓋編碼)。

+0

工作完美!感謝大家! – Brett 2010-08-12 15:21:43