вторник, 28 октября 2008 г.

Zip-архивирование в C#

Все гениальное - просто. И все простое - просто гениально! Это так!
Программирование - это тоже просто! Если программирование - сложно, значит вы не программист.

Суть в чем? В том, чтобы писать программы коротко, ясно и понятно. И работают тогда они, на удивление быстро. Самое лучшее решение - обычно самое короткое, и как показывает практика - самое лучшее.

К чему такое предисловие? Решил я заархивировать файл в C#. И как это сделать я никак не мог понять.
Иду в www.google.ru
Ввожу - "Zip архивирование в C#"
Выдает! Какая-то библиотека - SharpZipLib.
Качаю, начинаю разбираться. Вот здесь папочка Samples. Вот здесь то, вот здесь сё. Ну и так далее. Значит запускаю я эти сэмплы - вылетают эксэпшны. Не какит, думаю... Лезу в документацию. Ноль пользы.

Итак... Время поджимает. Прогу писать надо. Лезу в www.google.ru
Ввожу то же самое. Нахожу - DotNetZipLib!
На главной странице библиотеки нахожу пример кода! Вот он!
<---------------------------------------------------------------------->
try
{
using (ZipFile zip = new ZipFile("C:\\MyZipFile.zip"))
        {
         zip.AddFile("c:\\Base.txt");
zip.Save();
}
}
catch (System.Exception ex1)
{
            System.Console.Error.WriteLine("exception: " + ex1);
}
<---------------------------------------------------------------------->

Вот это да! Нет, вы представляете! "zip.AddFile("c:\\Base.txt");"
AddFile - Добавить Файл! Все просто!
Я смело подключаю библиотеку к своему проекту:
"using Ionic.Utils.Zip;"

И все! Программа работает!
Более того с помощью библиотеки DotNetZipLib можно также разархивировать архив(ы), добавить в архив(ы), и еще много чего!

Удачи!

2 комментария:

AKrapov комментирует...

Действительно, SharpZipLib я так и не понял как применить. Угроблено минут 20, никакого результата. Хотя казалось бы да, люди писали профессионалы и сделали там всё...

Почитал форумы, баги, проблемы. Плюнул. Попробую DotNetZipLib

Ещё есть компонент на базе Microsoft cabinet.dll но он довольно не удобен при распаковке :-( При запаковывании я указываю какой файл упаковать и как его назвать. При распаковке этой функции нет. Видимо есть у программистов что-то в крови, не нормальное.

Unknown комментирует...

пробовал использовать библиотеку версии 1.9 все нормально работает до тех пор, пока не пытаешься добавить в архив zip файл. В этом случает программа просто валится