2014-03-03 43 views
0

我想要做的是創建一段C#代碼,它能夠取得一個.zip文件,將其解壓縮,並且爲了這個例子,找到一個文件夾我將被稱爲'目標',這個目標文件夾將爲每個軟件包有不同的名稱,但內容的結構將是統一的。軟件包名稱不會派生目標文件夾名稱。使用C#提取具有不同內容結構的.zip文件

的.zip文件的結構可以是三個:

.\Thing.zip\GameData\Target\

.\Thing.zip\ThingCorp\GameData\Target\

.\Thing.zip\Target\

現在我有.zip文件提取工作,我只是需要一種方法來可靠地找到目標文件夾,有沒有辦法檢查目錄及其子目錄中是否存在文件夾?

+0

rar或zip? 2種不同的壓縮方法。 – Tsukasa

+0

@ sh3rifme你在提取之前或之後試圖找到這個目標文件夾嗎? – BenVlodgi

+0

@Tsukasa感謝編輯,沒有意識到我已經做到了! – sh3rifme

回答

2

什麼

Directory.EnumerateDirectories(pathHere); 

之前存在的方法是什麼?

這將產生一個IEnumerable與從中你可以使用... 要確保存在一個目錄指定路徑中的所有目錄,你把它傳遞之前,請確保您撥打

Directory.Exists(pathToVerify); 
+1

謝謝,作品像一個魅力! – sh3rifme

+0

這很好讀:)。快樂的編碼! – RvdV79

0

一旦你有你的.zip/.rar程序提取可以使用

System.IO.Directory.Exists(string path); 

然而,如果你想提取之前驗證該目錄是否存在,如果你是好使用外部庫。您可以使用DotNetZip庫。

您可以從內存中的流或直接從驅動器上的文件創建一個Ionic.Zip.ZipFile對象。

的ZipFile對象有一個名爲ContainsEntry

using (Ionic.Zip.ZipFile myZip = ZipFile.Read("MyArchive.zip")) 
{ 
    if(myZip.ContainsEntry(string path)) 
    { 
     //Something 
    } 
} 

這樣你就可以確切地知道你想要的目錄提取

2

對於相對搜索您可以使用Directory.GetDirectories()方法來查找包含eg。的所有文件夾「目標」,在你的根開始 -directory和搜索所有子文件夾:

var dirs = Directory.GetDirectories(yourSearchRootDir, "*Target*", SearchOption.AllDirectories); 

所以當dirs包含你正在尋找一個目錄,目標 -directory存在。

相關問題