Создание zip-архива из папки и всех вложенных подпапок в C#
Доброго времени суток! В примере ниже мы рассмотрим с Вами как можно создать zip-архив в C# из папки и всех вложенных в нее папок, но без явно исключенных папок.
Итак, код:
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
namespace TraverseFilesAndZipConsoleApp
{
internal class Program
{
static void Main(string[] args)
{
// исходная папка из которой создается архив
string dir = @"D:\ProjectsFolder\Wordpress_6";
// название создаваемого zip архива
string zipFileName = $"Wordpress6_{DateTime.Now.Second}.zip";
// получаем список файлов кроме файлов из папок obj и bin
var files = GetDirectoryFiles(dir, new List<string> { "\\obj\\", "\\bin\\" });
// создаем архив
ZipFiles(files, zipFileName);
}
public static IEnumerable<string> GetDirectoryFiles(string source_dir, List<string> excludes)
{
// проходимся по всем папкам и подпапкам
return Directory.EnumerateFiles(source_dir, "*.*", SearchOption.AllDirectories)
.Where(filename =>
{
foreach (var pattern in excludes)
{
// если путь к файлу содерждит шаблон, то такой файл нам не нужен
if (filename.Contains(pattern)) return false;
}
return true;
});
}
public static void ZipFiles(IEnumerable<string> files, string whereToSave = "files.zip")
{
// если файл создаваемого архива существует удаляем его, такая логика необязательна
if (File.Exists(whereToSave))
{
File.Delete(whereToSave);
}
// создаем файл архива
using (var archive = ZipFile.Open(whereToSave, ZipArchiveMode.Create))
{
foreach (var file in files)
{
// добавляем в архив файлы
archive.CreateEntryFromFile(file, file);
}
}
}
}
}
Таким образом , вот так просто можно создать архив из папки и всех ее подпапок в C#.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.