35
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

4 回答 4

76

怎么样:

zip.AddFile(file,"");

或者

zip.AddFile(file,@"\");
于 2010-11-08T16:21:08.320 回答
0

因为经过验证的答案是 4 年前,现在一天是另一种方式(更优雅),如果你想压缩目录中的所有文件(上面的代码看起来像它),你可以使用:

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

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

您可以在此处找到更多信息:CreateFromDirectory(String, String, CompressionLevel, Boolean)

于 2019-11-14T12:05:13.800 回答
-2
zip.AddFile(file, "..\...\".ToString.Replace("..\...\", null))
于 2016-07-22T10:37:20.630 回答
-3

这就是我所做的,并且奏效了。

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

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

于 2014-04-29T15:16:48.333 回答