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