2010-08-12 4 views
5

문자열에 GZipStream을 쓰는 방법이 필요합니다.C# GZipStream to String

내가 사용하고 :

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

나는 여러 가지 방법을 시도하지만, 그것을 알아낼 수 없습니다. 누구에게 아이디어가 있습니까?

많은 감사, 브렛

+0

가능한 복제본 [어떻게하면 MemoryStream에서 문자열을 가져 옵니까?] (http://stackoverflow.com/questions/78181/how-do-you-get-a-string-from-a-ememorystream) –

+0

내가 사용할 때 : var sr = new StreamReader (ms); var myStr = sr.ReadToEnd(); 문자열이 다시 비어 있습니다. GZipStream을 MemoryStream으로 변환 할 때 뭔가 빠져있을 수 있습니까? – Brett

+0

inFile이 항상 텍스트 파일이면 @Steven이 제안한 솔루션/링크가 작동합니다. 형식이 다르면 데이터의 bade64 표현 만있을 수 있습니다. –

답변

20

당신은 압축 해제 GZipStream을 가지고, 그래서 당신은 그것에서 데이터를 읽을 필요가있다. 가장 쉬운 방법은 문자열을 반환하는 ReadToEnd 메서드가있는 StreamReader으로 GZipStream을 래핑하는 것입니다.

뭔가 같은 :

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

(usinginFile가 폐쇄되고 다른 자원이 해제되어 있는지 확인합니다.)

NB이이 inFile 텍스트 UTF-8 또는 UTF 인코딩 포함되어 있다고 가정 않습니다 -16. 바이너리 콘텐츠 또는 다른 텍스트 인코딩으로 인해 문제가 발생할 수 있습니다 (다른 StreamReader 생성자로 인코딩을 재정의 할 수 있음).

+0

완벽하게 일했습니다! 모두에게 감사드립니다! – Brett