2010-11-08 118 views
27
using (ZipFile zip = new ZipFile()) 
{ 
    foreach(string file in Directory.GetFiles(folder)) 
    { 
     zip.AddFile(file, Path.GetFileName(file)); 
    } 
    zip.Save("test.zip")); 
} 

每次我添加文件时,都会为它创建一个新的子文件夹。DotNetZip在不创建文件夹的情况下添加文件

所以我想结束了:

test.zip 
    - myDoc.doc 
    - myPdf.pdf 

但我结束了:

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

回答

55

如何只:

zip.AddFile(file,""); 

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

这就更糟了。例如'Documents \ Process \ Practices \ text.doc'的文件路径将在路径中的每个级别的.zip中创建一个子文件夹,以便您最终生成'test.zip - > Documents - > Process - > Practices - > text.doc'。 – fearofawhackplanet 2010-11-08 16:35:55

+1

@fearofawhackplanet尝试更新的答案.. – Fosco 2010-11-08 17:09:10

+0

是的,现在的作品,谢谢! – fearofawhackplanet 2010-11-09 09:32:16

-2

这就是我所做的工作。

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

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

+0

这对我来说没有任何意义.. – Allie 2014-06-05 14:38:47

+1

此解决方案太具体,它只适用于两个文件夹... – 2014-08-26 08:03:02

-1
zip.AddFile(file, "..\...\".ToString.Replace("..\...\", null)) 
相关问题