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

Cada vez que agrego un archivo, se crea una nueva subcarpeta para él.DotNetZip agregar archivos sin crear carpetas

por lo que quiero terminar con:

test.zip 
    - myDoc.doc 
    - myPdf.pdf 

pero estoy terminando con:

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

Respuesta

55

¿Qué tal:

zip.AddFile(file,""); 

o

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

Eso lo hace aún peor. Una ruta de archivo de, por ejemplo, 'Documents \ Process \ Practices \ text.doc' creará una subcarpeta en .zip para cada nivel de la ruta, de modo que termine con' test.zip -> Documents -> Process -> Practices -> text.doc'. – fearofawhackplanet

+1

@fearofawhackplanet Pruebe la respuesta actualizada ... – Fosco

+0

sí que funciona ahora, ¡gracias! – fearofawhackplanet

-2

Esto es lo que hice y funcionó.

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

Envía el archivo de vuelta a 2 carpetas y reemplaza ..... con nada.

+0

esto no tiene ningún sentido para mí .. – Allie

+1

Esta solución es demasiado específica, solo funcionará para dos carpetas ... –

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