Работа с архивами в C++: часть первая


Архивы - это неотъемлемая часть сегодняшнего времени. Естественно, что такой популярный язык как C++ также не мог пройти мимо этого. В данной статье мы рассмотрим самую простую возможность работы с архивами - с помощью внешней программы. В качестве такой внешней программы мы возьмем архиватор 7-Zip.

Итак, для работы сначала необходимо скачать 7-Zip здесь. На этой странице есть различные версии архиватора, для различных систем и языков. Нам требуется просто архиватор для командной строки: он так и называется "Версия для командной строки 7-Zip". Качаем его, распаковываем в любое место. Из этого архива нам потребуется только один файл 7za.exe. Для запаковки примера можно взять отсюда же текстовый файл readme.txt.

Эти два файла копируем в тот каталог, в котором будет происходить выполнение нашей программы. Вообще, говоря, можно использовать любое место на жестком диске, так просто удобнее, меньше код. Сама программка такова:

#include <windows.h>

int main()
{
	system("\"7za.exe\"  a -tzip -mx=1 archive.zip readme.txt");
	system("pause");
}

В пятой строке, собственно говоря, все и происходит. Вот примерный синтаксис этой строки:

system("\"7za.exe\{Запуск архиватора} a -tzip{Вид архива, есть еще -t7z} -mx=1{Это степень сжатия. Чем больше тем сильнее сожмёт; доступные значения 1-9} archive.zip{Название архива} readme.txt{Исходный файл для архивации}");.

Различных команд и ключей немало, все они есть в справке, которая идет с архиватором.Шестая строка программы нужна исключительно для паузы, чтобы прочитать, что в ответ нам напишет архиватор - может, файл не нашел или что-то еще.

Для того, чтобы разархивировать zip или 7zip архивы, потребуется заменить пятую строку на такую:

system("\"7za.exe\" e readme.zip");
Здесь должно быть все понятно.

Работать с rar архивами с помощью данной программы нельзя - лицензия, видите-с. Но никто не мешает также запускать и Winrar с параметрами. Заменим, например, пятую строку таким образом

system("\"C:\\Program Files\\WinRAR\\WinRAR.exe\" e readme.rar");
Здесь:
readme.rar - предварительно заархивированный readme.txt.
C:\\Program Files\\WinRAR\\WinRAR.exe\ - адрес программы винрар на вашем компьютере (вообще-то это необязательно, можно перенести файл Winrar.exe просто в исполняемый каталог). Обратите внимание на слеши!

Вот так просто можно с помощью C++ заархивировать и разархивировать любой файл в форматы zip, 7zip, rar. Естественно, что в некоторых случаях использовать стороннюю программу нежелательно или просто нельзя, для таких случаев в другой части я напишу, как можно производить архивацию без чужого exe-файла.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си плюс плюс, архивы




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Пример заливки файла по ftp на java
Пример заливки файла по ftp на java
Возможные проблемы при подключении к Firebird из Visual Studio