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
答案 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。