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

Chaque fois que j'ajoute un fichier, il crée un nouveau sous-dossier.DotNetZip ajouter des fichiers sans créer de dossier

Je veux finir avec:

test.zip 
    - myDoc.doc 
    - myPdf.pdf 

mais je suis de se retrouver avec:

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

Répondre

55

Que diriez-vous juste:

zip.AddFile(file,""); 

ou

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

Ceci est encore pire. Un chemin de fichier de par exemple 'Documents \ Process \ Practices \ text.doc' créera un sous-dossier dans le fichier .zip pour chaque niveau du chemin afin que vous finissiez avec' test.zip -> Documents -> Processus -> Pratiques -> text.doc'. – fearofawhackplanet

+1

@fearofawhackplanet Essayez la réponse mise à jour .. – Fosco

+0

oui cela fonctionne maintenant, merci! – fearofawhackplanet

-2

C'est ce que j'ai fait et cela a fonctionné.

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

Il renvoie le fichier à 2 dossiers et remplace le ..... \ par Nothing.

+0

cela n'a aucun sens pour moi .. – Allie

+1

Cette solution est trop spécifique, elle ne fonctionnera que pour deux dossiers ... –

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