2011-09-23 51 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() –