2008-12-17 2 views
26

누구든지 .NET 용으로 훌륭한 오픈 소스 압축 라이브러리를 알고 있습니까? 내부 GZIP 구현에 대한 의견과 다른 글에 대해서는.NET 용 오픈 소스 zip 라이브러리?

+0

는 "나는 그물을 사용하여 압축 아카이브를 생성해야합니다. 그러나 닷넷 우리가이 문제를 극복 할 수있는 방법. 우편 아카이브 지원이 부족?"재 진술되었을 수 있습니다. 하지만 fx 4.5부터는 [System.IO.Compression.ZipArchive] (https://msdn.microsoft.com/en-us/library/system.io.compression.ziparchive (v = vs.110) .aspx)를 통해 수정 된 것으로 보입니다.). –

답변

35

SharpZipLib

, 그들은 하지 동일합니다! GZip은 보관에 필요한 헤더를 생성하지 않습니다. 하나의 파일 또는 스트림을 "압축"하는 데 유용합니다.

올바른 zip 아카이브에는 모든 압축 파일을 나열하는 헤더와 압축 된 데이터가있는 위치가 포함되어 있으므로 헤더를 만드는 것이 필요합니다. 즉 SharpZipLib은 많은 상업용 버전 중 하나이며 7zip과 같은 .NET 바인딩을 사용하여 외부의 어떤 것을 사용합니다.

누군가가이 말을 전하고 싶습니다. "그러나 나는 항상 .gz 개의 파일을 Linux에서 볼 수 있습니다!" - 그들은 단지 하나의 파일이고 .tar.gz도 예외는 아닙니다. tar는 아카이브 파일입니다. .gz은 압축 된 압축 파일입니다.

+0

.NET에 기능이 내장되어 있지 않아도됩니다. gzipstream 클래스를 참조하십시오. – AnthonyLambert

+0

gzipstream은 근처의 지퍼 기능이 아닙니다. –

+0

나는 파일에 너무 익숙해 져 있다고 생각합니다 ... gzip은 일반적인 압축 형식입니다. – AnthonyLambert

9

7-zip을 확인해보십시오. 그것은 오픈 소스와 내 fav ZIP 프로그램입니다. 매우 kewl. 멀티 코어를 활용합니다.

.NET SDK는 here입니다. 이미 오픈 소스 우편 .... ****

http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

이는 GZIP 라이브러리와 호환을 지원 .NET

+0

Dude - 7 zip은 압축 프로그램입니다. 또한 오픈 소스이기도합니다. 즉 .NET을 의미합니다. ==> LZMA 압축 및 압축 해제를위한 C# 소스 코드 –

+2

+1, SDK 역시 공개 도메인이므로 thats는 나에게 정말로 좋은 것 같습니다. – Tuminoid

+1

주의 사항 : 7-zip (안전) C# 구현은 관리되지 않는 라이브러리보다 10 배 (개인 노출, 차이가 너무 커서 벤치 마크하지 않음)와 매우 유사합니다. –

9

**** 그러나 사람. C# 응용 프로그램에서 C# 데이터를 압축하고 네트워크에서 압축을 풀기 위해이 방법을 사용했습니다. 잘 작동합니다.

토니

+0

압축률은 7-Zip과 어떻게 비교됩니까? –

+0

gZIP와 동일합니다. – AnthonyLambert

+0

system.io.compression 네임 스페이스가 완전하게 열리지 않았으므로 유용한 정보는 microsoft.internal 네임 스페이스 내에 있습니다. in system.io.compression은 실제 zip 파일이 아닌 새 오피스 파일과 같은 작은 zip 파일을 만드는 데 유용한 부분입니다. –

10

소프 트 라이브러리 (Ionic.Zip.dll)를 사용하는 것은 매우 쉽습니다 우편 번호. SharpZip보다 구현하기가 더 쉽다고 생각합니다.

http://www.codeplex.com/DotNetZip

+0

SharpZipLib에서 수행하는 일부 파일은 확장되지 않습니다. –

+0

어떤 파일이 확장되지 않습니까? – Cheeso

+0

@ Sergey - 예, 경고에 대한 자세한 내용 은요? – mlhDev

-1

당신은 또한 J 번호의 재배포를 확인할 수 있습니다. java.util.zip을 다시 구현합니다. Article

2

here을 보시려면 7-zip과 C#을 사용하십시오. 이것은 SO의 다른 게시물에있는 질문이었습니다. 이것은 당신을 도울 수 있습니다.

25

커플 코멘트.

  1. J # 런타임을 사용하지 마십시오. J #은 Microsoft에서 단종되었습니다. 향후 지원에 의문의 여지가 있습니다. 또한 전체 J # 런타임은 원하는 모든 것을 ZIP 지원으로 삼킬 때 큰 목소리입니다.
  2. .NET 2.0 이후 .NET 기본 클래스 라이브러리의 일부인 System.IO.Compression의 GzipStream은 IETF RFC-1952 압축 용 스트림 인터페이스를 제공합니다. 압축 비율은 최적이 아니며 이전에 압축 된 데이터를 크게 확장하지만 압축은 괜찮습니다. 이 bug was reported to Microsoft, but it's apparently been closed. DeflateStream도 비슷하지만 RFC 1951에 해당합니다. GZipStream이 zip 파일을 실행한다는 일반적인 오해가 있습니다. 사실이 아니다. 이 두 파일 중 어느 것도 zip 파일을 사용하지 않습니다.
  3. System.IO.Packaging.ZipPackage가 있습니다.작동하지만, 주로 MS Office 2007 (.docx, .xslx 및 .pptx) 파일의 패키징을 위해 고안되었습니다. zip 파일의 경우 다루기 힘들며 암호화와 같은 많은 ZIP 기능을 지원하지 않습니다.
  4. .NET에서 zip 파일을 유연하게 만들고 읽고 싶다면 현재 제 3 자 라이브러리가 필요합니다.

DotNetZip은 좋은 제 3 자 옵션입니다. 무료, 오픈 소스, 적극적으로 유지 관리, 사용하기 쉽고 작지만 우수한 기능 세트. 단일 어셈블리로 출하되며 완전히 관리되는 코드입니다. Compact Framework 및 일반 .NET Framework에서 작동합니다. 사전 요구 사항은 .NET 2.0입니다.

DotNetZip에는 {Zlib, GZip, Deflate} Stream과 같은 클래스가있는 ZLIB 라이브러리도 포함되어 있습니다. .NET에 기본 제공되는 것과 비교할 수 있지만 Compression Level을 설정할 수있는 기능이 포함되어 있으며 상위 레벨에서는 내장 클래스보다 훨씬 효과적으로 압축합니다. ZlibStream은 RFC 1950 압축을 수행합니다.

DotNetZip은 ZIP64, 암호, AES 암호화, 스트림, SFX 및 유니 코드를 수행합니다. SharpZipLib보다 사용법이 훨씬 간단합니다. 좋은 도움말 파일 (.chm)과 많은 코드 예제가 있습니다.

DNZ CHM http://i27.tinypic.com/2nl8fwk.jpg

+0

DotNetZip을 오픈 소스 프로젝트에 포함시킬 수 있습니까? Microsoft Public License는 GPL과 함께 사용할 수 없다고 들었습니다. – Zenya

+0

먼저, 저는 IP 변호사 또는 소프트웨어 라이센스 및 상호 호환성에 대한 전문가가 아닙니다. 그러나 나는 귀하의 첫 번째 질문에 긍정적으로 대답 할 수 있다고 확신합니다. DotNetZip은 오픈 소스 프로젝트에서 사용할 수 있습니다. 귀하의 의견에 두 번째로 암시적인 질문이 있습니다. MS-PL 라이선스가있는 라이브러리를 코드 또는 GPL 라이선스가있는 라이브러리와 함께 사용할 수 있습니까? 그것은 완전히 다른 질문입니다. 나는 대답하려고하지 않을 것입니다. 확실하지는 않지만 "오픈 소스는 GPL을 의미합니다"라는 가정이있을 수 있습니다. 이것은 유효한 가정이 아닙니다. – Cheeso

+0

위대한 도서관, 고마워! – nrodic