이러한 일련의 메소드가 잘못되었을 수 있습니까?.net gzip 압축 풀기 스트림 관련 문제
byte[] bytes;
using (var memory_stream = new MemoryStream())
using (var gzip_stream = new GZipStream(memory_stream, CompressionMode.Compress))
{
var buffer = Encoding.Default.GetBytes("Hello nurse!");
gzip_stream.Write(buffer, 0, buffer.Length);
bytes = memory_stream.ToArray();
}
int total_read = 0;
using (var input_stream = new MemoryStream(bytes))
using (var gzip_stream = new GZipStream(input_stream, CompressionMode.Decompress, true))
{
int read;
var buffer = new byte[4096];
while ((read = gzip_stream.Read(buffer, 0, buffer.Length)) != 0) {
total_read += read;
}
}
Debug.WriteLine(bytes);
Debug.WriteLine(total_read);
gzipStr은 유효한 Gzipped 스트림입니다. GzipStream() 압축을 사용하여 성공적으로 압축 할 수 있습니다.
왜 total_read가 항상 0입니까? 내 스트림의 압축을 푸는 gzip 스트림입니까? 내가 뭔가 잘못하고 있는거야?
내가 여기서 뭐하는거야 ??? !!!
확인을 (당신이 MONO_TRACE_LISTENER 비트를 제거 할 수 있습니다) 년은 세척 gzip을 스트림을 사용하여 포인트를 얻고 Encoding.Default/Encoding.UTF8를 사용합니다. .. B 유감스럽게도 내 문제는 gzip 압축과 관련이 없었습니다 ... 수정했지만 총 _stills_ 0을 읽었습니다. 따라서 주요 문제가 계속 발생합니다. – kementeus
방금 사용하고있는 정확한 코드를 게시했습니다. Flush를 꺼내면 0이되고, 넣으면 12가됩니다. Encoding.UTF8은 측면 문제이지만 인코딩에 항상주의를 기울일 필요가 있습니다. –