Добавить файлы в архив c

Обновлено: 05.07.2024

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

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

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


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

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

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

Здесь должно быть все понятно.

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

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

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

есть ли способ создать Zip-архив, содержащий несколько файлов, когда файлы в настоящее время находятся в памяти? Файлы, которые я хочу сохранить, действительно только текст и хранятся в классе string в моем приложении. Но я хотел бы сохранить несколько файлов в одном автономном архиве. Все они могут быть в корне архива.

было бы неплохо сделать это с помощью SharpZipLib.

использовать ZipEntry и PutNextEntry() для этого. Ниже показано, как это сделать для файла, но для объекта в памяти просто используйте MemoryStream

использование SharpZipLib для этого кажется довольно сложным. Это намного проще в DotNetZip. В v1.9, код выглядит следующим образом:

приведенный выше код предполагает, что stringContent содержит данные, которые будут храниться в файлах (или записях) в zip-архиве. Первая запись- " Readme.txt " и хранится в "каталоге" верхнего уровня в zip-архиве. Следующие две записи хранятся в каталоге "чтения" в zip архив.

строки кодируются в кодировке по умолчанию. Существует перегрузка AddEntry (), не показанная здесь, которая позволяет явно указать кодировку для использования.

Если у вас есть содержимое в потоке или массиве байтов, а не строка, есть перегрузки для AddEntry (), которые принимают эти типы. Есть также перегрузки, которые принимают делегат записи, ваш метод, который вызывается для записи данных в zip. Это работает для простого сохранения набора данных в zip файл, например.

DotNetZip является бесплатным и открытым исходным кодом.

Да, вы можете использовать SharpZipLib для этого-когда вам нужно предоставить поток для записи, используйте MemoryStream .

я сталкиваюсь с этой проблемой, используя пример MSDN, я создал этот класс:

вы можете использовать его следующим образом:

вы можете пройти MemoryStream (или Stream ) к ZipSticle.Add , например:

вы также можете сделать это немного по-другому, используя сериализуемый объект для хранения всех строк

затем вы можете сериализовать его в поток, чтобы сохранить его.
Чтобы сэкономить место, вы можете использовать GZipStream (из системы.ИО.Сжатие), чтобы сжать его. (Примечание: GZip сжатие потока, а не архив нескольких файлов).

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

эта функция должна создать массив байтов из потока данных: я создал простой интерфейс для обработки файлов для простоты

я использовал Cheeso это!--5--> добавлять MemoryStream s в качестве источника различных файлов Excel. Когда я загрузил zip, в файлах ничего не было. Это может быть способ, которым мы пытались создать и загрузить файл через AJAX.

чтобы получить содержимое различных файлов Excel для включения в Zip, мне пришлось добавить каждый из файлов как byte[] .

использовать StringReader читать из ваших строковых объектов и выставлять их как поток s.

Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий:
* Создать архив с необходимыми параметрами, в который будут помещаться файлы.
* Поместить в архив необходимые файлы.
* Записать архив.

Создание объекта ЗаписьZIPФайла можно осуществить двумя путями - создать инициализированный объект или создав неинициализированный объект вызвать у него метод Открыть. В обоих случаях состав параметров является одинаковым. В самом простом случае требуется указать только имя файла, куда будет записан архив.

Для создания нового архива требуется указать:
* Имя файла, куда будет записан архив. Этот параметр является обязательным. Если такой файл уже существует на диске, он будет перезаписан!Пароль доступа к архиву. Если этот параметр пропущен или равен пустой строке, то шифрование производится не будет!
* Комментарий к архиву.
* Метод сжатия файлов в архиве. На выбор предоставляется возможность скопировать файлы в архив без сжатия или сжать их. По умолчанию файлы сжимаются.
* Уровень сжатия файлов в архиве. Можно выбирать между минимальным, оптимальным и максимальным сжатием. По умолчанию используется оптимальное сжатие
* Метод шифрования. Можно защитить архив методом шифрования ZIP 2.0, совместимым с большинством программ, или с помощью шифрования на основе новейшего стандарта AES с различной длиной ключа (128, 192 и 256 бит). Однако следует помнить, что данный метод может быть не совместим с некоторыми программами архивирования, например WinRAR.

После создания объекта необходимо добавить в него необходимые файлы, воспользовавшись методом Добавить. Он принимает на вход 3 параметра:
1. Полное имя файла или маску.
2. Режим сохранения путей к файлу. Можно сохранять полные пути, не сохранять пути совсем или сохранять пути относительно каталога. Режим обработки подкаталогов. Можно обрабатывать подкаталоги рекурсивно или не обрабатывать их. Параметр имеет смысл, если в качестве имени указана маска.

После того, как все необходимые файлы добавлены, можно записать архив на диск, воспользовавшись методом Записать().
Важно понимать, что до выполнения этого метода, никаких реальных действий по созданию архива не происходит. После записи архива на диск объект закрывает его и для работы со следующим архивом необходимо выполнить метод Открыть().

Пример:
Код 1C v 8.х

Особенности упаковки файлов по маске

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

Доступ к архиватору

Как добавить файл в архив Winrar - Установка

Приложение находится в широком доступе в сети интернет. Для того чтобы его скачать, необходимо зайти в любую поисковую систему и ввести запрос: «WinRAR». Не забудьте проверить файл на наличие вирусов, чтобы не навредить вашему устройству. После того как архиватор будет скачан, приступите к его установке, следуя инструкциям на экране.

Создание архива

Как добавить файл в архив Винрар - Добавить в архив

Программа была установлена, можно приступить к архивированию файлов. Кликните правой клавишей мышки на рабочий стол и вам откроется контекстное меню. Затем среди списка задач выберите «создать». У вас автоматически появится дополнительное меню, на котором будет написано «WinRAR архив». За выбором этого параметра последует создание архива, который вам следует переименовать.

Добавление файлов в архив WinRAR

Как добавить файл в архив Винрар

Для того чтобы добавить файлы в архив, потребуется выполнение следующих шагов: находим и выделяем нужные нам документы и фотографии. Выделенные данные перемещаем в ярлык архива, который создали. Проверяем: вся информация должна быть упакована в архиве. Существует еще один алгоритм действий: выделяем нужные нам файлы и нажимаем правую клавишу мышки, выбираем «добавить в архив», а во всплывшем окне выбираем параметры архива и даем ему имя. Подтверждаем действия, кликая «ОК». Готово!

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