2015-01-28 1 views
-2

파일을 압축하는 데 ZIpstorer 클래스 라이브러리를 사용하고 있습니다. 그것은 Deflatestore 압축 방법을 가지고있다. 그것은 잘 작동하고 적절합니다. 필자는이 라이브러리에서 생성 된 zip 파일과 7zip 소프트웨어에 의해 생성 된 zip 파일을 비교 (바이너리 비교)했으며 이진 파일도 동일합니다. 하지만 deflate 옵션을 사용하여 압축 한 후 Zipstorer 및 7zip에 의해 cretaed 된 zip 파일의 일부 바이너리 변경이 있음을 발견했습니다. 7zip에는 압축 수준 논리가 있고 Fastest으로 설정 되었기 때문입니다.수축 및 가장 빠른 압축 수준을 사용하여 파일을 압축하는 자체 클래스

이제 압축 방법 - 압축과 동일한 수준의 압축 수준을 구현하고 싶습니다. 코드 ZIpstorer 및 zip 파일 형식을 이해하려고했지만 어떤 아이디어도 얻지 못했습니다. 그렇다면 누구나 수축과 함께 가장 빠른 압축 수준을 구현하는 데 도움이 될 수 있습니까?

+0

동일한 내용, 압축 방법 및 압축 수준이 다른 zip 파일이 이진 수준에서 다른 것으로 의심되는 것은 아닙니다. 왜 그들은 7-zip의 출력과 일치해야합니까? – spender

+0

@spender 저장 방법의 경우 이진수가 동일합니다. pls가 어떻게 다를 수 있는지 알려주시겠습니까? 또한 내 질문은 deflate와 함께 가장 빠른 압축 수준을 구현하는 것입니다. –

+0

[ "Extra"fields] (http://www.artpol-software.com/ZipArchive/KB/0610242300.aspx)에는 임의의 데이터가 포함될 수 있습니다. – spender

답변

1
그래서, the source보고, 나는 ZipStorer 다음 constructor 전화와 DeflateStream 인스턴스화하는 것을 볼 수있다

...

new DeflateStream(this.ZipFileStream, CompressionMode.Compress, true); 

당신의 시간에 ZipStorer class (라인 588를 변경해야합니다 쓰기) 대신 this DeflateStream constructor을 사용합니다.

DotNetZip 또는 ZipArchiveZipStorer 이상으로 선호합니다.

+0

압축 방법 대신 CompressionLevel.Fastest를 사용하면 작동하지 않습니다 "CompressionLevel '이름이 현재 컨텍스트에 존재하지 않습니다."라는 오류 메시지가 나타납니다. 나는 CompressionLevel을 .net 3.5에서 사용할 수 없다고 생각한다. .net 3.5를 사용 중입니다. 나는 그것이 3.5에서 일하기를 원한다. –

+0

DotNetZip도 .NET Framework 3.5에서 작동합니까? –

+0

[ ".NET Framework 2.0 or later,"] (http://dotnetzip.codeplex.com/) – spender

관련 문제