Главная » Статьи » 1C 8.2 » Программирование |
Работа с ZIP-архивами в 1С
Создание архива Для того чтобы записать файлы в архив, необходимо выполнить несколько простых действий: создать архив с необходимыми параметрами, в который будут помещаться файлы; поместить в архив необходимые файлы; записать архив. Рассмотрим эти действия на следующем примере: НаКлиенте Процедура ЗаписатьФайлВАрхив(Команда) Архив = Новый ЗаписьZIPФайла("c:\архив.zip", "Пароль", "Комментарий",МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20); Архив.Добавить("c:\data.xls", РежимСохраненияПутейZIP.НеСохранятьПути); Архив.Добавить("c:\nomen.txt", РежимСохраненияПутейZIP.СохранятьОтносительныеПути); КонецПроцедуры Создание объекта ЗаписьZIРФайла можно осуществить двумя путями: создать инициализированный объект создать неинициализированный объект и вызвать у него метод Открыть () (файл архива не должен существовать в этом случае); НаКлиенте Процедура ДобавлениеФайловВАрхив(Команда) Архив = Новый ЗаписьZIPФайла("c:архив.zip", "", "", МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20); Архив.Добавить("c:ZIP*.xls",РежимСохраненияПутейZIP.СохранятьОтносительныеПути,РежимОбработкиПодкаталоговZIP.НеОбрабатывать); Архив.Добавить("c:ZIP*.xls",РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); Архив.Записать(); КонецПроцедуры При создании нового архива (либо при создании конструктором, либо методом Открыть ()) требуется указать имя файла, куда будет записан архив. Этот параметр является обязательным. Если такой файл уже существует на диске, он будет перезаписан (в момент вызова метода Записать ()). Пароль доступа к архиву. Если этот параметр пропущен или равен пустой строке, то шифрование производиться не будет. Комментарий к архиву. Метод сжатия файлов в архиве. На выбор предоставляется возможность скопировать файлы в архив без сжатия или сжать их. По умолчанию файлы сжимаются. Уровень сжатия файлов в архиве. Можно выбирать между минимальным, оптимальным и максимальным сжатием. По умолчанию используется оптимальное сжатие. Метод шифрования. Можно защитить архив методом шифрования ZIP20, совместимым с большинством программ, или с помощью шифрования на основе новейшего стандарта AES с различной длиной ключа (128, 192 и 256 бит). Однако следует помнить, что данный метод может быть не совместим с некоторыми программами архивирования старых версий. После создания объекта необходимо добавить в него сжимаемые файлы.Для этой цели используется метод Добавить (). У него 3 параметра: Полное имя файла или маска. Режим сохранения путей к файлу. Можно сохранять полные пути, не сохранять пути совсем или сохранять пути относительно каталога. Режим обработки подкаталогов. Можно обрабатывать подкаталоги рекурсивно или не обрабатывать их. Параметр имеет смысл, если в качестве имени указана маска. После того как все необходимые файлы добавлены, можно записать архив на диск, воспользовавшись методом Записать () . Важно понимать, что до выполнения этого метода никаких реальных действий по созданию архива не происходит. После записи архива на диск объект закрывает его, и для работы со следующим архивом необходимо выполнить метод Открыть (). Особенности упаковки файлов по маске. Остановимся подробнее на особенностях упаковки файлов по маске. Предположим, что у нас есть следующие файлы: c:\ZIP\filel.xls,c:\ZIP\file2.xls,c:\ZIP\file.doc,c:\ZIP\Test\file3.xls,c:\ZIP\Test\file4.xls Для упаковки всех этих файлов в архив можно воспользоваться следующим кодом (листинг 1.79). Следует отметить, что относительные пути актуальны только при задании маски (значение СохранятьОтносительныеПути системного перечисления РежимСохраненияПутей(). В архив файлы попадут следующим образом:c:\ZIP\filel.xlsv,\file3.xls,\file4.xls, Добавить файлы в архив можно и другим способом: Архив.Добавить("c:\ZIP\*.xls",РежимСохраненияПутейZIP.СохранятьОтносительныеПути,РежимОбработкиПодкаталоговZIP.НеОбрабатывать); В результирующий архив попадут следующие файлы:\filel.xls,\file2.xls При создании архива можно включать файлы во вложенных каталогах НаКлиенте Процедура ДобавлениеФайловВАрхив(Команда) Архив = Новый ЗаписьZIPФайла("c:\архив.zip", "", "", МетодСжатияZIP.Сжатие,УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20); Архив.Добавить("c:\ZIP\*.xls", ,РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); Архив.Записать(); КонецПроцедуры Особенности работы метода Добавить() Упаковать файлы в архив можно несколькими способами в зависимости от того, какой результат необходим. Упаковать некоторые файлы в папку ZIP с сохранением структуры каталогов. Предположим, что у нас есть следующие файлы:c:\ZIP\filel.xls,c: \ZIP\Test\file3.xls Добавить их в архив можно, вызывая для каждого метод Добавить() с указанием требуемых параметров В архив файлы попадут следующим образом:\ZIP\filel.xls,\ZIP\Test\file3.xls Упаковать все файлы в папку ZIP без сохранения структуры каталогов. Предположим, что у нас есть следующие файлы:c:\ZIP\filel.xls c:\ZIP\Test\file3.xls Для добавления всех файлов передадим в метод Добавить () маску для поиска всех файлов (*.*), скажем, что нет необходимости сохранять пути для файлов, и укажем, что требуется производить поиск в подпапках Архив.Добавить("c:\ZIP\*.xls", РежимСохраненияПутейZIP.НеСохранятьПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); В архив файлы попадут следующим образом:\-filel.xls,\file3.xls При этом следует помнить, что если в разных папках будут файлы с одинаковыми именами, то операция выполнена не будет из-за того, что фактически мы попытаемся добавить в архив файлы с одинаковыми именами. Упаковать все файлы в папку ZIP с сохранением относительных путей. Предположим, что у нас есть следующие файлы:c:\ZIP\filel.xls, c:\ZIP\Test\file3.xls Для добавления всех файлов передадим в метод Добавить () маску для поиска всех файлов (*.*), скажем, что необходимо сохранять относительные пути для файлов, и укажем, что требуется производить поиск в подпапках. При этом следует помнить, что относительные пути будут начинаться от папки, в которой начался поиск: Архив.Добавить("c:\ZIP\*.xls",РежимСохраненияПутейZIP.СохранятьОтносительныеПути,РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); В архив файлы попадут следующим образом:\filel.xls\Test\file3.xls
| |
Просмотров: 2879
| Теги: |