web-dev-qa-db-fra.com

DotNetZip ajoute des fichiers sans créer de dossiers

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, cela crée un nouveau sous-dossier pour celui-ci.

Alors je veux finir avec:

test.Zip
    -  myDoc.doc
    -  myPdf.pdf

mais je termine avec:

test.Zip
    -  myDoc.doc
        -  myDoc.doc
    -  myPdf.pdf
        -  myPdf.pdf
34

Que diriez-vous simplement:

Zip.AddFile(file,"");

ou

Zip.AddFile(file,@"\");
70
Fosco

Parce que la réponse approuvée était il y a 4 ans maintenant un jour est une autre façon (plus élégante) de faire cela, si vous voulez compresser tous les fichiers du répertoire (le code ci-dessus lui ressemble), vous pouvez utiliser:

ZipFile.CreateFromDirectory(sourceDirectoryName, destinationArchiveFileName, compressionLevel, includeBaseDirectory)

Vous êtes intéressé par le dernier paramètre (includeBaseDirectory) et en passant une valeur fausse.

Vous pouvez trouver plus d'informations ici: CreateFromDirectory (String, String, CompressionLevel, Boolean)

0