2

我正在尝试从代码创建一个 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);
        }
    }
4

2 回答 2

5

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

于 2011-09-23T15:55:28.467 回答
1

从他们的示例页面看来,如果您指定完整的文件路径,它将在与该路径对应的 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");
  }
于 2011-09-23T15:56:55.643 回答