Создание 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#.
- 
					Создано 20.06.2023 08:43:48
					 - 
					
					Михаил Русаков				 
			
		
			
				
				
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.