ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode


Архивация файлов в C#. Библиотека для работы с архивами Ionic Zip.


В сегодняшнем уроке мы узнаем, как архивировать файлы в C#. Стандартными средствами делать это не очень удобно, так что в этой статье мы будем использовать специальную библиотеку — Ionic Zip. Скачать её можно внизу статьи либо по этой ссылке.

Для наглядного примера работы напишем небольшую программу на Windows Forms. Так будет выглядеть её внешняя оболочка. В TextBox’e будет выводиться путь файла, который пользователь решит архивировать, кнопкой «Выбрать файл» будет вызываться меню обзора папок для архивации, а при нажатии на кнопку «Сохранить архив» пользователь сможет выбрать путь, в который будет сохранен архив и, собственно, произойдёт само сохранение. Мы поставили в TextBox’e свойство ReadOnly в значение True, чтобы пользователь не мог изменять путь исходной папки — это необязательное действие.

Архивация файлов в C#. Библиотека для работы с архивами.

Теперь нам надо добавить библиотеку. Для этого в «Обозревателе решений» щёлкаем правой кнопкой мыши на вкладку References, в появившемся меню нажимаем «Добавить ссылку…»

Архивация файлов в C#. Библиотека для работы с архивами.

В появившемся окне выбираем вкладку «Обзор», затем нажимаем на кнопку «Обзор» в правом нижнем углу и находим файл Ionic.Zip.dll. Проверяем, стоит ли после добавления библиотеки напротив её названия галочка.

Архивация файлов в C#. Библиотека для работы с архивами.

Если всё верно, возвращаемся к коду и подключаем библиотеку:

С библиотекой разобрались, теперь начинаем кодить. Перво-наперво мы инициализируем класс FolderBrowserDialog, который даёт пользователю возможность выбора папки в окне обзора. Нам это нужно для выбора папки, которую мы будет архивировать.

Теперь мы переходим к конструктору форм и дважды кликаем на кнопку «Выбрать файл». Код данной кнопки состоит всего из пары строк:


При нажатии на данную кнопку открывается окно «Обзор папок», и если в данном окне будет нажата кнопка «ОК», то в TextBox запишется путь нахождения данной папки.

Архивация файлов в C#. Библиотека для работы с архивами. Архивация файлов в C#. Библиотека для работы с архивами.

 

 

 

 

Теперь в конструкторе форм нажимаем на кнопку «Сохранить архив».

Код этой кнопки такой:

Сначала мы инициализируем класс SaveFileDialog, который предоставляет пользователю выбрать путь для сохранения какого-либо файла. Также мы настроим фильтр для sfd, который не даст пользователю сохранить файл в каком-либо другом формате кроме .zip.

Если TextBox не пуст и в SaveFileDialog’e с именем sfd будет нажата кнопка «Сохранить» (аналогично «ОК»), то начинает работу наша библиотека. Мы создаем новый класс ZipFile и в нём указываем путь сохранения архива, у нас это путь, выбранный через класс SaveFileDialog.
Примечание: можно обойтись без SaveFileDialog и т.п., если в скобках указать какой-либо статический путь, например так: ZipFile zf = new ZipFile(«C:\Users\Denis\Desktop\archive.zip);

В следующей строке мы указываем путь к файлу, который мы будем архивировать — в нашем случае это папка, выбранная через кнопку «Выбрать файл».

Строка zf.Save(); сохраняет файл из строки 8 по пути, написанному в строке 7.

Затем для удобства появляется сообщение об удачной архивации, можно проверять архив по пути, указанному через SaveFileDialog.

Вот такая простая программа, вот такая удобная библиотека.

Примечание: единственный существенный минус данной библиотеки — неприятие кириллицы в файлах внутри архивов. Если в папке, которую Вы хотите заархивировать имеются файлы на русском или украинском, то после архивации их названия будут выглядеть примерно так: Архивация файлов в C#. Библиотека для работы с архивами.

Скачать нашу программу а также библиотеку Ionic Zip можно по ссылкам ниже:

Скачать исходник Скачать библиотеку на С#

 

 

5/5 - (6 голосов)



Поделиться в соц. сетях:

6 комментария(ев) к статье “Архивация файлов в C#. Библиотека для работы с архивами Ionic Zip.

  1. Станислав

    Ругается на
    zf.Save();
    Необработанное исключение типа «System.IO.FileNotFoundException» в Ionic.Zip.dll

    1. admin

      Проверил работоспособность программы в Visual Studio 2013 — всё в норме.
      Может попробовать заново подключить dll в References ?

      1. Станислав

        Я уже разобрался, спасибо :)

        ZipFile zip = ZipFile.Read(«zip.zip»);
        foreach (ZipEntry zip_ex in zip)
        {
        zip_ex.Extract(dir_vol, ExtractExistingFileAction.DoNotOverwrite);
        }

    1. admin

      // путь к архиву
      String sourcePath = «…»;
      using (Ionic.Zip.ZipFile zip = Ionic.Zip.ZipFile.Read(sourcePath))
      {

      zip.ExtractAll(«путь, куда разархивировать», Ionic.Zip.ExtractExistingFileAction.DoNotOverwrite);

      }

  2. Дмитрий

    Спасибо. Ваш урок пригодился для небольшого проекта ))
    PS В в стандартные способы в С# 8 разве не удобны?? Или они более «многословны»??

Добавить комментарий

Ваш адрес email не будет опубликован.