Создать архив и добавить файл в него:
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); }
что делать, если архив который надо распаковать под паролем? есть способ узнать это? может проверка какая-то
UsesEncryption на элементах внутри архива, так как можно шифровать или не шифровать в архиве выборочно отдельные файлы
Смотрите, если попадается битый архив, то после обработки исключения этот битый архив неудается удалить, так как он занят другим процессом. Второй день не могу найти решение. Буду признателен за помощь