2016-09-05 2 views
0

코드에서 파일을 압축하려고합니다. 오류는 정적 void 메서드 CopyStream "dest.Write (buffer, 0, len);"줄에 있습니다. 오류는 "잘못된 상태 (알 수없는 압축 방법 (0x4D))"입니다. 어떤 아이디어가 이런 일이 일어나는 이유는 무엇입니까?C# 코드에서 파일을 압축하는 방법?

public byte[] ZippingFile() 
    { 
     MemoryStream dest = new MemoryStream(); 
     FileStream file = new FileStream(tbPath.Text + @"\" + tbFileName.Text, FileMode.Open, FileAccess.Read); 
     byte[] array = new byte[0]; 
     try 
     { 
      ZlibDecompression(file, dest); 
      array = dest.ToArray(); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, 
          MessageBoxIcon.Error); 
     } 
     finally 
     { 
      file.Close(); 
      dest.Close(); 
     } 
     return niz; 
    } 


    private void ZlibDecompression(Stream src, MemoryStream dest) 
    { 
     src.Seek(0, SeekOrigin.Begin); 
     using (ZlibStream zlibStreamOut = new ZlibStream(dest, CompressionMode.Decompress, CompressionLevel.Level4, true)) 
     { 
      CopyStream(src, zlibStreamOut); 
      zlibStreamOut.Close(); 
      dest.Seek(0, SeekOrigin.Begin); 
     } 
    } 

    static void CopyStream(Stream src, Stream dest) 
    { 
     byte[] buffer = new byte[1024]; 
     int len = src.Read(buffer, 0, buffer.Length); 
     while (len > 0) 
     { 
      dest.Write(buffer, 0, len); 
      len = src.Read(buffer, 0, buffer.Length); 
     } 
     dest.Flush(); 
    } 
+0

ZlibDecompression이 압축되지 않은 파일을 압축 해제 한 것처럼 보였습니다. –

답변

1

파일을 "압축"하려고하는 경우 CompressionMode.Compress를 사용해야합니다. "알 수없는 압축 방법 (0x4D)"은 아마도 압축 해제 루틴이 파일이 압축 된 코드를 찾기를 기대하는 위치에 문자 M이 있음을 의미합니다. 파일의 첫 문자 일 수 있습니다.

+0

고맙습니다. 그것은 오류였다. – Nemanja

관련 문제