2015-06-10 2 views
0

Я нашел код ниже в переполнении стека, который я пробовал, но не знал, как его использовать.Попытка Zip разных папок в указанном каталоге с использованием ZipFile

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

Так как я могу получить список папок/каталогов внутри корневого каталога в массив?

public static void CreateZipFile(string fileName, IEnumerable<string> files) 
{ 
    var zip = ZipFile.Open(fileName, ZipArchiveMode.Create); 
    foreach (var file in files) 
    { 
     zip.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal); 
    } 

    zip.Dispose(); 
} 
+0

['Directory.GetFiles()'] (https://msdn.microsoft.com/en-us/library/07wt70x2 (v = vs.110) .aspx)? Непонятно, что именно вы хотите сделать. Что это за «все файлы», о которых вы говорите? Что такое «корневой каталог»? – CodeCaster

+0

В основном, c: // root_folder/= корневая папка/верхний каталог, внутри этого есть список подпапок или вспомогательных каталогов, которые были добавлены случайным образом, как я могу их закрепить в отдельных ZIP-файлах. это означает, что мне нужен мой код для чтения всех этих подпапок и хранения их в массиве, а затем использовать цикл foreach для их zip-адресов. –

+0

Итак, ['Directory.GetDirectories()'] (https://msdn.microsoft.com/en- нас/библиотека/c1sez4sc (v = vs.110) .aspx). – CodeCaster

ответ

0

Обычно я просто использую DotNetZip
И этот код:

using (var file = new ZipFile(zipName)) 
{ 
    file.AddFiles(fileNames, directoryPathInArchive); 
    file.Save(); 
} 

Где zipName это имя почтового архива вы хотите создать и fileNames имена файлов, которые вы хотите поместить в него.

+0

спасибо, позвольте мне проверить это –

+0

Я просто пытался это сделать, это относится только к файлам, которые являются содержимым каталогов/папок, меня интересует обработка папок. –

+0

@Jerry Mbawa Существует метод «AddDirectory». – dmigo