使用dotnetzip在zip文件中创建虚拟目录树

时间:2011-09-23 15:50:06

标签: c# dotnetzip

我正在尝试从代码创建一个zip文件,我正在使用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);
        }
    }

2 个答案:

答案 0 :(得分:5)

您可以使用AddDirectoryByName在zipfile中创建新目录,而不是导入目录

答案 1 :(得分: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");
  }