Папка zip в C#

Нет, вы не сможете. Переменные вызовы аргументов решаются во время компиляции, а ваш NSArray имеет содержимое только во время выполнения.

66
задан Peter Mortensen 25 March 2010 в 15:03
поделиться

5 ответов

Из файла справки DotNetZip , http://dotnetzip.codeplex.com/releases/

using (ZipFile zip = new ZipFile())
{
   zip.UseUnicodeAsNecessary= true;  // utf-8
   zip.AddDirectory(@"MyDocuments\ProjectX");
   zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G") ; 
   zip.Save(pathToSaveZipFile);
}
49
ответ дан 24 November 2019 в 14:49
поделиться

В BCL нет ничего, что могло бы сделать это за вас, но есть две отличные библиотеки для .NET, которые поддерживают эту функциональность.

Я использовал оба и могу сказать, что оба они очень полные и имеют хорошо спроектированные API, так что это в основном вопрос личных предпочтений.

Я не уверен, поддерживают ли они явно добавление папок , а не просто отдельные файлы в zip-файлы, но должно быть довольно легко создать что-то, что рекурсивно повторяется по каталогу и его подкаталогам, используя классы DirectoryInfo и FileInfo .

21
ответ дан 24 November 2019 в 14:49
поделиться

На MSDN есть статья. ], в котором есть образец приложения для архивирования и распаковки файлов и папок исключительно на C #. Некоторые из этих классов я успешно использую уже давно. Код выпущен под лицензией Microsoft Permissive License, если вам нужно знать такие вещи.

EDIT: Спасибо Cheeso за то, что он указал, что я немного отстал от времени. Пример MSDN, на который я указал, на самом деле использует DotNetZip и в наши дни действительно очень полнофункциональный. Основываясь на моем опыте работы с предыдущей версией, я с радостью рекомендую ее.

SharpZipLib также является довольно зрелой библиотекой, высоко оцененной людьми и доступной под лицензией GPL.

4
ответ дан 24 November 2019 в 14:49
поделиться

«Куда мне скопировать ICSharpCode.SharpZipLib.dll, чтобы увидеть это пространство имен в Visual Studio?»

Вам необходимо добавить файл dll в качестве ссылки в свой проект. Щелкните правой кнопкой мыши ссылки в обозревателе решений-> Добавить ссылку-> Обзор, а затем выберите dll.

Наконец, вам нужно добавить его как оператор using в любые файлы, в которых вы хотите его использовать.

0
ответ дан 24 November 2019 в 14:49
поделиться

Следующий код использует сторонний ZIP компонент от Rebex:

// add content of the local directory C:\Data\  
// to the root directory in the ZIP archive
// (ZIP archive C:\archive.zip doesn't have to exist) 
Rebex.IO.Compression.ZipArchive.Add(@"C:\archive.zip", @"C:\Data\*", "");

Или если вы хотите добавить больше папок без необходимости открывать и закрывать архив несколько раз:

using Rebex.IO.Compression;
...

// open the ZIP archive from an existing file 
ZipArchive zip = new ZipArchive(@"C:\archive.zip", ArchiveOpenMode.OpenOrCreate);

// add first folder
zip.Add(@"c:\first\folder\*","\first\folder");

// add second folder
zip.Add(@"c:\second\folder\*","\second\folder");

// close the archive 
zip.Close(ArchiveSaveAction.Auto);

Вы можете скачать ZIP компонент здесь.

Использование свободного, лицензированного под LGPL SharpZipLib является распространенной альтернативой.

Отказ от ответственности: я работаю в компании Rebex

1
ответ дан 24 November 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: