В этой статье я хотел бы поговорить про архивирование файлов. Лидером из библиотек по Архивированию является Zlib, но я не подружился с ней. Никак не смог разобраться(ну честно, я не особо старался) ни когда сидел на C++ ни на C#, хотя всё же надо будет разобраться.
В Microsoft .NET Framework почему то нет встроенной библиотеки, по архивированию файлов. Есть, но для Java, конечно её можно использовать и в C#, но там получаются проблемы с переносом программ. Ибо на другом ПК должен быть установлен помимо .NET Framework, так ещё и пакет java.util.zip. Хотя я даже реализовывал с помощью его. Вот даже нарыл, скрипт для архивирования папки java.util.zip.cs (3.1 Кб, 641 скачиваний).
Так же для .NET есть популярная библиотека SharpZipLib.com, с которой я разобрался очень быстро. Подключаем DLL файл ICSharpCode.SharpZipLib.dll к проекту(Project – Add Pereferences – Browse) и
using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Checksums; ... FastZip fZip = new FastZip(); fZip.CreateZip(@"C:\file.zip", @"C:\papka", true, "");
Ещё можно архивировать через командную строку архиватора WinRAR, но для этого, конечно, нужно, что бы он был установлен. Открываем процесс с параметрами про которые можно прочитать в Хелпе у WinRAR’а.
using System.Diagnostics; ... Process process = new Process(); process.StartInfo.CreateNoWindow = true; process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; process.StartInfo.Arguments = "a -y -inul -ibck C:\\file.zip C:\\PROGRA~1\\DIR"; process.StartInfo.FileName = "WinRAR"; process.Start();
Эх… опять спалил “не документированные функции”
Разберусь с Zlib, напишу по подробнее про архивацию.