2017-12-12 6 views
0

ReadAsync/WriteAsync을 사용하여 MemoryStream을 압축 해제하려고하는데 작동하지 않습니다.GZipStream을 사용하여 파일의 압축을 풀지 못했습니다 (CopyToAsync 사용하지 않음)

int bufferSize = 8192; 
using (var memoryStream = new MemoryStream()) 
using (var fileStream = new FileStream(destinationFilename, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) 
{ 
    // ... populate the MemoryStream ... 
    memoryStream.Position = 0; 

    using (var gzipStream = new GZipStream(memoryStream, CompressionMode.Decompress, true)) 
    { 
     ////await gzipStream.CopyToAsync(fileStream); 

     byte[] buffer = new byte[bufferSize]; 

     while (await gzipStream.ReadAsync(buffer, 0, bufferSize) > 0) 
     { 
      await fileStream.WriteAsync(buffer, 0, bufferSize); 
     } 
    } 

    await fileStream.FlushAsync(); 
} 

gzipStream.CopyToAsync은 작동하지만 다른 방식으로는 작동하지 않습니다. 왜?

감사합니다.

+0

"작동하지 않습니다"라는 의미는 무엇입니까? – Rob

+0

파일을 읽을 수 없습니다 .MP4 인 경우 VLC에서 파일을 열 수 있지만 이미지 나 사운드가 없습니다. – pellea

답변

0

ReadAsync는 읽은 바이트 수를 반환합니다.이 숫자는 무시합니다. WriteAsync는 처음 읽은 정확한 바이트 수입니다.