Если вы манипулируете файлами ZIP, вы можете обратиться к сторонней библиотеке, чтобы помочь вам.
Например, DotNetZip, который был недавно обновлен. Текущая версия сейчас v1.8. Вот пример для создания почтового индекса:
using (ZipFile zip = new ZipFile())
{
zip.AddFile("c:\\photos\\personal\\7440-N49th.png");
zip.AddFile("c:\\Desktop\\2005_Annual_Report.pdf");
zip.AddFile("ReadMe.txt");
zip.Save("Archive.zip");
}
Вот пример обновления существующего почтового индекса; Вам не нужно извлекать файлы, чтобы сделать это:
using (ZipFile zip = ZipFile.Read("ExistingArchive.zip"))
{
// 1. remove an entry, given the name
zip.RemoveEntry("README.txt");
// 2. Update an existing entry, with content from the filesystem
zip.UpdateItem("Portfolio.doc");
// 3. modify the filename of an existing entry
// (rename it and move it to a sub directory)
ZipEntry e = zip["Table1.jpg"];
e.FileName = "images/Figure1.jpg";
// 4. insert or modify the comment on the zip archive
zip.Comment = "This zip archive was updated " + System.DateTime.ToString("G");
// 5. finally, save the modified archive
zip.Save();
}
Вот пример, который извлекает записи:
using (ZipFile zip = ZipFile.Read("ExistingZipFile.zip"))
{
foreach (ZipEntry e in zip)
{
e.Extract(TargetDirectory, true); // true => overwrite existing files
}
}
DotNetZip поддерживает многобайтовые символы в именах файлов, Zip-шифрование, AES-шифрование, потоки, Unicode, самораспаковывающиеся архивы.
Также подходит ZIP64 для файлов длиной более 0xFFFFFFFF или для архивов с более чем 65535 записями.
бесплатно. с открытым исходным кодом
получить его на
codeplex или прямая загрузка с windows.net - CodePlex прекращен и заархивирован