На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Работа с архивами в 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, си плюс плюс, архивы

Читайте также:


Ленивый Лёша
PDO и MySQLi: битва API баз данных PHP


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.