2010-08-12 19 views
5

Ho bisogno di un modo per scrivere un GZipStream su una stringa.C# GZipStream to String

sto usando:

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

Ho provato diversi metodi, ma non riesco a capirlo. Qualcuno ha qualche idea?

Molte grazie, Brett

+0

possibile duplicato di [Come si ottiene una stringa da un MemoryStream?] (Http://stackoverflow.com/questions/78181/how-do-you-get-a-string-from-a-memorystream) –

+0

Quando utilizzo: var sr = new StreamReader (ms); var myStr = sr.ReadToEnd(); la stringa torna vuota. Potrei perdere qualcosa sulla conversione di un GZipStream in un MemoryStream? – Brett

+0

se inFile è sempre un file di testo, allora la soluzione/collegamento suggerita da @Steven funzionerà. I formati sono diversi, quindi puoi avere solo una rappresentazione bade64 dei dati. –

risposta

20

Hai un decompressione GZipStream, quindi è necessario leggere i dati da esso. Il modo più semplice è quello di avvolgere il GZipStream con un StreamReader che ha un metodo ReadToEnd che restituisce una stringa.

Qualcosa di simile:

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

(using dichiarazioni garantire che inFile è chiuso e tutte le altre risorse sono liberati.)

NB questo non dare per scontato che inFile contiene testo codificato UTF-8 o UTF -16. Il contenuto binario o altra codifica del testo potrebbe causare problemi (è possibile ignorare la codifica con un diverso costruttore StreamReader).

+0

Perfetto! Grazie a tutti! – Brett