DotNetZip添加文件而不创建文件夹

时间:2010-11-08 16:09:55

标签: c# zip directory dotnetzip

using (ZipFile zip = new ZipFile())
{
    foreach(string file in Directory.GetFiles(folder))
    {
        zip.AddFile(file, Path.GetFileName(file));
    }
    zip.Save("test.zip"));
}

每次添加文件时,都会为其创建一个新的子文件夹。

所以我想最终:

test.zip
    -  myDoc.doc
    -  myPdf.pdf

但我最终得到了:

test.zip
    -  myDoc.doc
        -  myDoc.doc
    -  myPdf.pdf
        -  myPdf.pdf

4 个答案:

答案 0 :(得分:67)

如何:

zip.AddFile(file,"");

zip.AddFile(file,@"\");

答案 1 :(得分:0)

因为一个公认的答案是4年前,现在几天是另一种方法(更优雅),如果您要压缩目录中的所有文件(上面的代码看起来像这样),可以使用:

ZipFile.CreateFromDirectory(sourceDirectoryName, destinationArchiveFileName, compressionLevel, includeBaseDirectory)

您对最后一个参数(includeBaseDirectory)感兴趣并传递了错误的值。

更多信息,请点击此处:CreateFromDirectory(String, String, CompressionLevel, Boolean)

答案 2 :(得分:-2)

zip.AddFile(file, "..\...\".ToString.Replace("..\...\", null))

答案 3 :(得分:-3)

这就是我所做的,而且有效。

zip.AddFile(file, "..\...\".ToString.Replace("..\...\", Nothing))

它将文件发送回2个文件夹,并将......替换为Nothing。