2011-09-23 71 views
2

我試圖創建代碼zip文件中創建壓縮文件虛擬目錄樹,我使用dotnetzip使用dotnetzip

我想不存在於磁盤上的文件夾中創建一個目錄樹。我該怎麼做呢?

我試過使用AddDirectory但這似乎想要在磁盤上找到目錄。我也嘗試過AddEntry,但這需要一些內容。

我的文件使用FileStream選項存儲在SQL Server中,並按層次結構進行組織。

我寫了這個遞歸方法來做到這一點,但AddDirectory行不起作用。

private void GetFiles(ZipFile zipFile, Folder folder, string path) 
    { 
     zipFile.AddDirectory(folder.FolderName, path); 

     foreach (var file in folder.Files) 
      zipFile.AddEntry(file.FileName, file.FileData); 

     foreach(var subfolder in folder.SubFolders) 
     { 
      GetFiles(zipFile, subfolder, path + "\\" + subfolder.FolderName); 
     } 
    } 

回答

5

您可以使用AddDirectoryByName創建的zip文件的新目錄,而不是導入目錄

+0

謝謝!你的谷歌比我的好:-) –

1

這從他們的榜樣頁面看起來,如果你指定完整filel路徑,這將增加的條目ZIP對應的路徑..因此,你可以嘗試只添加完整路徑的文件,並跳過AddDirectory步驟..至少這是我可以從他們的文檔中的代碼示例收集:

添加一組項目轉換爲zip文件,在zip存檔中指定一個公共目錄。本示例將條目添加到zip文件。每個條目都使用指定的路徑名​​添加。

String[] filenames = { "ReadMe.txt", "c:\\data\\collection.csv", "c:\\reports\\AnnualSummary.pdf"}; 
    using (ZipFile zip = new ZipFile()) 
    { 
    zip.AddFiles(filenames, "files"); 
    zip.Save("Archive.zip"); 
    } 
+0

Anas是正確的,新的文件夾名稱將使用AddFiles()方法的第二個參數創建。沒有必要使用AddDirectory() –