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

Jedes Mal, wenn ich eine Datei hinzufüge, erstellt sie einen neuen Unterordner dafür.DotNetZip Dateien hinzufügen, ohne Ordner zu erstellen

Deshalb möchte ich mit am Ende:

test.zip 
    - myDoc.doc 
    - myPdf.pdf 

aber ich enden mit:

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

Antwort

55

Wie wäre es einfach:

zip.AddFile(file,""); 

oder

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

Das macht es noch schlimmer. Ein Dateipfad von zum Beispiel 'Documents \ Process \ Practices \ text.doc' erstellt einen Unterordner in der .zip für jede Ebene des Pfades, so dass Sie' test.zip -> Dokumente -> Prozess -> Praktiken -> erhalten Text.doc'. – fearofawhackplanet

+1

@fearofawhackplanet Probieren Sie die aktualisierte Antwort .. – Fosco

+0

ja das funktioniert jetzt, danke! – fearofawhackplanet

-2

Das habe ich gemacht und es hat funktioniert.

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

Es sendet die Datei zurück in 2 Ordner und ersetzt die ..... \ mit nichts.

+0

das macht für mich keinen Sinn .. – Allie

+1

Diese Lösung ist zu spezifisch, sie wird nur für zwei Ordner funktionieren ... –

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