Архивация файлов в 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 можно по ссылкам ниже:

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

 

 

Архивация файлов в C#. Библиотека для работы с архивами Ionic Zip.
5 (100%) 3 votes

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

3 комментария(ев) к статье “Архивация файлов в 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);
        }

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">