2009-02-26 55 views

回答

22

沒有內置庫。 有開源選項。

DotNetZip是其中之一。簡單,易於使用。它具有很好的功能:AES加密,常規加密,流,ZIP64,文件註釋,Unicode,進度事件等等。它是免費且開源的。

下面是一些示例代碼。

// extract all Photoshop files larger than 100mb 
    using (ZipFile zip1 = ZipFile.Read(ZipFileName)) 
    { 
     var LargePhotoShopFiles = zip1.SelectEntries("name = *.psd and size > 100mb"); 
     foreach (ZipEntry e in LargePhotoShopFiles) 
     { 
      if (e.UsesEncryption) 
       e.ExtractWithPassword("unpackDirectory", "VerySecret!"); 
      else 
       e.Extract("unpackDirectory"); 
     } 
    } 
2

嘗試System.IO.Compression.DeflateStream

+4

不,DeflateStream不會做ZIP文件。只是FYI,內置的GZipStream也沒有。另外,這兩個流都可以表現出先前壓縮或不可壓縮數據的異常壓縮行爲。他們實際上可以增加數據的大小。你已經被警告! – Cheeso 2009-03-02 22:12:50

32

編輯:請參閱註釋 - SharpZipLib現在無法維護,您可能想避免它。

開源:#ZipLib

我相信,在System.IO.Compression命名空間中的類都很好,壓縮/解壓縮數據的單個流,但沒有什麼內置的框架,以應對實際的zip文件。

編輯:正如螞蟻的回答指出,有System.IO.Packaging.ZipPackage但可以肯定的看起來像真的設計用於WPF使用,而不會是非常方便的使用一般的zip文件處理。值得調查。儘管......我還沒有意識到......絕對值得研究。

+0

是真的。 #ZipLib效果很好。 – Inferis 2009-02-26 23:58:05

+0

是不是C#4.0本地支持這個?我以爲我曾經在某個地方讀過。但是我之前使用ZipLib取得了成功。 – 2009-02-27 00:14:38

+0

我不知道.NET 4是否。0會支持這一點 - 我不會感到驚訝。它仍然是一種方式,雖然:) – 2009-02-27 07:32:25

6

7Zip將有助於其在提供多種語言

10

退房System.IO.Packaging.ZipPackage類。

1

我將是第二個建議http://www.7-zip.org/sdk.html LZMA SDK,但它不是ZIP。

  1. 這是在公共領域
  2. 它的速度快上解壓
  3. 它完全管理的實施
  4. 這比ZIP更好的壓縮/ RAR
  5. 這是一個非常小的足跡
  6. 它可以工作作爲流
0

System.IO.Compression有ZipArchive等級.Net 4.5。

相關問題