2014-01-28 3 views
2

내 프로젝트에 포함 된 zip 파일이 있습니다. 나는 그것을 어떤 위치에 압축을 풀 필요가있다.C에서 임베디드 파일의 스트림에서 압축을 해제하는 방법

외부 라이브러리를 사용하지 않는 것이 좋습니다.

Stream _pluginZipResourceStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("plugin.zip"); 

나는 GZipStream을 시도했지만 오류가 발생했습니다.

 using (FileStream decompressedFileStream = File.Create(outputFileName)) 
     { 
      using (GZipStream decompressionStream = new GZipStream(fileStream, CompressionMode.Decompress)) 
      { 
       decompressionStream.CopyTo(decompressedFileStream); 
      } 
     } 

InvalidDataException는 처리되지 않은했다 : Gzip으로 헤더의 매직 번호가 올바르지 않습니다. GZip 스트림을 전달하고 있는지 확인하십시오.

압축을 해제하는 방법 ???

답변

1

GZip은 특정 압축 알고리즘이며 zip 파일에서는 사용되지 않을 가능성이 높습니다.

.NET 4.5를 사용하는 경우 ZipArchive 클래스를 사용할 수 있습니다. 그렇지 않은 경우 How to extract ZIP file in C#을 참조하십시오. 당신이 프레임 워크 4.5 이상을 사용하는 것이 운이 좋은 경우

1

, 당신이 볼 ZipArchive 사용할 수 있습니다

4.0 또는 그 이상 붙어있는 경우 http://msdn.microsoft.com/de-de/library/System.IO.Compression%28v=vs.110%29.aspx

, 당신은 외부 라이브러리를 사용, 또는 변환합니다 보관 파일을 GZip으로 가져옵니다.

+0

저는 ZipArchiveEntry.ExtracttoFile을 사용해야합니까? – Dineshkumar

+0

zip 파일에 저장하는 내용에 따라 다릅니다. 두 개 이상의 파일이 압축되어 있고 그 중 하나를 원한다면 ZipArchiveEntry.ExtractToFile은 선택 사항이 아닙니다. 모든 파일의 압축을 풀려면 하나의 파일 만 있어도 ZipArchive.ExtractToDirectory를 선호합니다. 희망이 도움이됩니다. – Omnibus

+0

고마워, 나는 모든 것을 시도하고 마침내 그것이 일하게 만들었다! – Dineshkumar

관련 문제