2014-03-02 48 views
5

我有zip文件具有以下內部結構:如何從C#.NET 4.5中的zip壓縮文件中提取特定目錄?

file1.txt 
directoryABC 
    fileA.txt 
    fileB.txt 
    fileC.txt 

什麼是從「directoryABC」文件夾中的文件解壓到硬盤上的一個目標位置的最佳方法是什麼?例如,如果目標位置是「C:\ TEMP」,那麼它的內容應該是:

temp 
    directoryABC 
     fileA.txt 
     fileB.txt 
     fileC.txt 

而且在某些情況下,我想提取「directoryABC」的唯一內容,因此結果將是:

temp 
    fileA.txt 
    fileB.txt 
    fileC.txt 

我該如何使用C#.NET 4.5中System.IO.Compression的類來實現這個功能?

回答

6

這是另一個版本解壓一個名爲目錄複製到目標目錄中的文件...

class Program 
{ 
    static object lockObj = new object(); 

    static void Main(string[] args) 
    { 
     string zipPath = @"C:\Temp\Test\Test.zip"; 
     string extractPath = @"c:\Temp\xxx"; 
     string directory = "testabc"; 
     using (ZipArchive archive = ZipFile.OpenRead(zipPath)) 
     { 
      var result = from currEntry in archive.Entries 
         where Path.GetDirectoryName(currEntry.FullName) == directory 
         where !String.IsNullOrEmpty(currEntry.Name) 
         select currEntry; 


      foreach (ZipArchiveEntry entry in result) 
      { 
       entry.ExtractToFile(Path.Combine(extractPath, entry.Name)); 
      } 
     } 
    }   
} 
+0

注意的是,爲了TU使用'的使用ZipFile'是'System.IO.Compression'但所需的程序集是'System.IO.Compression.FileSystem'。 [文檔](https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile.aspx)表明它正確,但我有麻煩發現此問題。 –

相關問題