Как программно сжать каталог в zip-файл - PullRequest
16 голосов
/ 23 марта 2010

Я хочу сжать весь каталог, который может содержать любое количество подкаталогов, в один ZIP-файл.

Я могу программно сжать один файл в zip-файл.

Чтобы сжать весь каталог, я могу вспомнить рекурсивную программу, которая проходит через каждый подкаталог и сжимает его.

Но есть ли какой-нибудь простой способ сжать всю папку, используя подобный код, без необходимости писать какие-либо рекурсивные функции?

Ответы [ 4 ]

22 голосов
/ 25 марта 2010

Используя DotNetZip , в классе ZipFile есть метод AddDirectory (), который делает то, что вам нужно:

using (var zip = new Ionic.Zip.ZipFile())
{
    zip.AddDirectory("DirectoryOnDisk", "rootInZipFile");
    zip.Save("MyFile.zip");
}

Этот пример и многие другие доступны вCodePlex .

5 голосов
/ 09 декабря 2014
ZipFile.CreateFromDirectory(<path of folder you need to zip>, <path of zip file with .zip in the end>, CompressionLevel.Fastest, true);
5 голосов
/ 23 марта 2010

Взгляните на один из этих API:

2 голосов
/ 23 марта 2010
...