Создать архив и добавить файл в него:

using (ZipFile zip = new ZipFile())
  {
    zip.AddFile("ReadMe.txt");
    zip.AddFile("Resume.doc");
    zip.AddFile("Portrait.png");
    zip.Save("Package.zip");
  }

Добавить файлы в zip архив, используя шифрование Zip 2.0, с установкой пароля на все файлы:

  using (ZipFile zip = new ZipFile())
  {
    zip.Password= "123456!";
    zip.AddFile("ReadMe.txt");
    zip.AddFile("7440-N49th.png");
    zip.AddFile("2005_Annual_Report.pdf");
    zip.Save("Backup.zip");
  }

Добавить файлы в zip архив, используя шифрование Zip 2.0, с установкой пароля на некоторые файлы:

  using (ZipFile zip = new ZipFile())
  {
    zip.AddFile("ReadMe.txt"); // нет пароля для этого файла
    zip.Password= "123456!";
    zip.AddFile("7440-N49th.png");
    zip.Password= "!Secret1";
    zip.AddFile("2005_Annual_Report.pdf");

    zip.Save("Backup.zip");
  }

Создать zip архив, добавить файлы, и использовать WinZIP совместимое AES-256 битное шифрование для одного из файлов:

  using (ZipFile zip = new ZipFile())
  {
    zip.AddFile("ReadMe.txt"); // нет пароля для этого файла
    zip.Password= "Cool.Hand.Luke!";
    zip.Encryption= EncryptionAlgorithm.WinZipAes256;
    zip.AddFile("Rawdata-2008-12-18.csv");
    zip.Save("Backup-AES-Encrypted.zip");
  }

 

Создать zip архив, добавить файл, без использования сжатия файла. Это может пригодиться в том случае если файл уже сжат до этого, например mp3 файл. Так как если сжимать этот файл то сжатый файл может стать размером больше чем оригинал. Библиотека DotNetZip самостоятельно выключает сжатие для тех файлов, которые становятся больше после сжатия, но свойство ForceNoCompression позволяет сделать это явно:

  using (ZipFile zip = new ZipFile())
  {
    zip.ForceNoCompression = true;
    zip.AddFile(@"MyMusic\Handel\Messiah-01.mp3");
    zip.Save(ZipFileToCreate);
  }

 

Запаковать всю директорию рекурсивно. Используйте Unicode кодировку если имеются файлы с не ANSI кодировкой. И установим комментарий к архиву.

using (ZipFile zip = new ZipFile())
  {
    zip.UseUnicode= true;  // utf-8
    zip.AddDirectory(@"MyDocuments\ProjectX");
    zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G") ;
    zip.Save(ZipFileToCreate);
  }

 

Запаковать всю директорию рекурсивно. Используем кодировку big5 для файлов на китайском языке:

  using (ZipFile zip = new ZipFile())
  {
    zip.Encoding = System.Text.Encoding.GetEncoding("big5"); // chinese
    zip.AddDirectory(@"MyDocuments\ProjectX");
    zip.Save(ZipFileToCreate);
  }

 

Запаковываем файлы используя ZIP64, для упаковки больших файлов:

 using (ZipFile zip = new ZipFile())
  {
    zip.UseZip64WhenSaving = Zip64Option.AsNecessary;
    zip.AddFile(@"RawData-HugeFile-13800.dat");
    zip.Save(ZipFileToCreate);
  }

Добавить содержимое, полученное из потока (MemoryStrean, FileStream, и т.д.)
в ZIP архив. Плюс добавить комментарий к записи.

  using (ZipFile zip = new ZipFile())
  {
    ZipEntry e= zip.AddEntry("Content-From-Stream.bin", StreamToRead);
    e.Comment = "Это содержимое было добавлено из потока";
    zip.AddFile("Readme.txt");
    zip.Save(ZipToCreate);
  }

 

Открываем имеющийся файл, удаляем запись (файл) из него и сохраняем изменения:

 using (ZipFile zip = ZipFile.Read(ExistingZipFile))
  {
    // use the indexer to remove the file from the zip archive
    zip["Readme.txt"] = null;
    zip.Comment = "Этот архив был модифицирован. Из него были удалены некоторые файлы";
    zip.Save();
  }

 

Открываем имеющийся архив. Переименовываем файл. Сохраняем изменения:

int renameCount = 0;
 using (ZipFile zip2 = ZipFile.Read(ExistingZipFile))
 {
    foreach (ZipEntry e in zip2)
    {
      if (e.FileName.EndsWith(".txt"))
      {
         var newname = "перименован файл\\" + e.FileName;

         e.FileName = newname;
         e.Comment = "renamed";
         renameCount++;
      }
    }
    zip2.Comment = String.Format("Этот архив был изменен. {0} файлов переименовано.", renameCount);
    zip2.Save();

 

Извлечь все файлы из архива:

  using (ZipFile zip = ZipFile.Read(ExistingZipFile))
  {
    foreach (ZipEntry e in zip)
    {
      e.Extract(TargetDirectory);
    }
  }

 

Извлечь всё содержимое зашифрованное паролем:

  using (ZipFile zip = ZipFile.Read(ExistingZipFile))
  {
    ZipEntry e = zip["TaxInformation-2008.xls"];
    e.ExtractWithPassword(BaseDirectory, Password);
  }

 

DotNetZip примеры работы
Метки:

3 thoughts on “DotNetZip примеры работы

  • 30 июня 2014 на 23:04
    Постоянная ссылка

    что делать, если архив который надо распаковать под паролем? есть способ узнать это? может проверка какая-то

    Ответить
  • 1 июля 2014 на 04:58
    Постоянная ссылка

    UsesEncryption на элементах внутри архива, так как можно шифровать или не шифровать в архиве выборочно отдельные файлы

    Ответить
  • 11 сентября 2014 на 22:19
    Постоянная ссылка

    Смотрите, если попадается битый архив, то после обработки исключения этот битый архив неудается удалить, так как он занят другим процессом. Второй день не могу найти решение. Буду признателен за помощь

    Ответить

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

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

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и соглашаюсь c политикой конфиденциальности *