Попытка сжать файлы из нескольких папок - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть файлы, хранящиеся в нескольких разных папках, и мне нужно сделать ZIP-архив из всех файлов в этих папках. Я создал простую функцию с использованием System.IO.Compression, которая берет данные из одной папки и создает ZIP-архив, но я не могу понять, как это сделать для нескольких папок. Папки в ZIP не нужны, только файлы из него.

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

string folder1 = @"c:\ex\ZipFolder1";
string zipPath = @"c:\ex\AllFiles.zip";

ZipFile.CreateFromDirectory(folder1, zipPath);

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018
Have you tried using AddFile() method of ZipFile Class. Here you can replace 'PathOfFiles' dynamically as per your requirement. 

var fileNames = new string[] { "a.txt", "b.xlsx", "c.png" };
            using (var zip = new ZipFile()){
    foreach (var file in fileNames)
    zip.AddFile(@"PathOfFiles\" + fileName, "");
    zip.Name = "ZipFile";
  var pushStreamContent = new PushStreamContent((stream, content, context) =>
            {
                zip.Save(stream);
                stream.Close(); 
            }, "application/zip");
        }
0 голосов
/ 11 сентября 2018

Я думаю, что вы используете DotNetZip. Просто создайте ZipFile и добавляйте файлы по методу AddFiles

using (var file = new ZipFile())
{
    //fileNames is an array containing the paths of the files from differents folders
    file.AddFiles(fileNames);
    file.Save(zipFile);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...