Получает ZIP-архив в виде двоичных данных и закрывает файл. При использовании данного метода объект ЗаписьZipФайла должен быть создан с помощью конструктора без параметров. При этом открывать архив явно с помощью метода Открыть не требуется. При завершении работы данный метод закрывает архив, аналогично методу Записать.
Синтаксис
ПолучитьДвоичныеДанные(<Пароль>, <Комментарий>, <МетодСжатия>, <УровеньСжатия>, <МетодШифрования>)Полное описание, параметры и ограничения
ЗаписьZipФайла.ПолучитьДвоичныеДанные (ZipFileWriter.GetBinaryData)
ЗаписьZipФайла (ZipFileWriter)
ПолучитьДвоичныеДанные (GetBinaryData)
Не рекомендуется использовать, начиная с версии 8.3.26.
Рекомендуется использовать:
ПолучитьДвоичныеДанные
Доступен, начиная с версии 8.3.10.
Синтаксис:
ПолучитьДвоичныеДанные(<Пароль>, <Комментарий>, <МетодСжатия>, <УровеньСжатия>, <МетодШифрования>)
Параметры:
<Пароль> (необязательный)
Тип: Строка.
Пароль, который будет назначен архиву.
Если пароль не назначен или является пустой строкой, то шифрование не происходит.
<Комментарий> (необязательный)
Тип: Строка.
Комментарий, описывающий ZIP-файл.
<МетодСжатия> (необязательный)
Тип: МетодСжатияZIP.
Метод сжатия, которым будет сжиматься архив.
Значение по умолчанию: Сжатие.
<УровеньСжатия> (необязательный)
Тип: УровеньСжатияZIP.
Уровень сжатия данных.
Значение по умолчанию: Оптимальный.
<МетодШифрования> (необязательный)
Тип: МетодШифрованияZIP.
Метод шифрования, которым будет зашифрован архив.
Значение по умолчанию: Zip20.
Возвращаемое значение:
Тип: ДвоичныеДанные.
Описание:
Получает ZIP-архив в виде двоичных данных и закрывает файл.
При использовании данного метода объект ЗаписьZipФайла должен быть создан с помощью конструктора без параметров.
При этом открывать архив явно с помощью метода Открыть не требуется.
При завершении работы данный метод закрывает архив, аналогично методу Записать.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.10.
Не рекомендуется использовать, начиная с версии 8.3.26.
Методическая информация
Практические примеры
Получить старый ZIP в памяти без открытого архивного файла
Упаковываем свой временный текст в двоичные данные, открываем поток архива и проверяем список файлов без распаковки.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Это разбор старого ZIP API для сопровождения существующих модулей. В справке 8.5 его использование не рекомендуется с 8.3.26; для нового кода выбирайте ЗаписьФайлаАрхива и ЧтениеФайлаАрхива.
Добавить принимает путь к файлу, поэтому создаётся один уникальный временный источник. Сам архив остаётся в памяти.
Для ПолучитьДвоичныеДанные создавайте запись без параметров и не вызывайте перед этим Открыть.
ИсходныйФайл = ПолучитьИмяВременногоФайла("txt");
Поток = Неопределено;
Чтение = Неопределено;
Попытка
Документ = Новый ТекстовыйДокумент;
Документ.УстановитьТекст("Учебный пакет");
Документ.Записать(ИсходныйФайл, КодировкаТекста.UTF8);
Запись = Новый ЗаписьZipФайла;
Запись.Добавить(ИсходныйФайл);
ДанныеАрхива = Запись.ПолучитьДвоичныеДанные();
Сообщить(ДанныеАрхива.Размер());
Поток = ДанныеАрхива.ОткрытьПотокДляЧтения();
Чтение = Новый ЧтениеZipФайла(Поток);
Сообщить(Чтение.Элементы.Количество());
Для Каждого Элемент Из Чтение.Элементы Цикл
Сообщить(Элемент.Имя);
КонецЦикла;
Чтение.Закрыть();
Чтение = Неопределено;
Поток.Закрыть();
Поток = Неопределено;
// Второе открытие того же пакета через неинициализированное чтение.
Поток = ДанныеАрхива.ОткрытьПотокДляЧтения();
Чтение = Новый ЧтениеZipФайла;
Чтение.Открыть(Поток);
Если Чтение.Элементы.Количество() <> 1 Тогда
ВызватьИсключение "Повторное чтение пакета не совпало";
КонецЕсли;
Чтение.Закрыть();
Чтение = Неопределено;
Поток.Закрыть();
Поток = Неопределено;
УдалитьФайлы(ИсходныйФайл);
Исключение
Если Чтение <> Неопределено Тогда
Чтение.Закрыть();
КонецЕсли;
Если Поток <> Неопределено Тогда
Поток.Закрыть();
КонецЕсли;
УчебныйФайл = Новый Файл(ИсходныйФайл);
Если УчебныйФайл.Существует() Тогда
УдалитьФайлы(ИсходныйФайл);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;Разбор по шагам
Сохраняем исходный текст в один собственный временный файл.
Неинициализированная запись собирает пакет; ПолучитьДвоичныеДанные возвращает готовый архив и завершает запись.
Открываем новый поток чтения двоичных данных и передаём его конструктору чтения архива.
После проверки количества закрываем чтение и поток; повторяем проверку через Новый без параметров и Открыть. Удаляем источник.
Как проверить результат
Размер пакета больше нуля; в коллекции ровно один элемент с расширением txt.
Оба открытия возвращают количество 1. Исходный временный файл удалён.
Не вызывайте ПолучитьДвоичныеДанные после конструктора записи по имени файла: это другой способ работы, запрещённый описанием данного метода.
Ожидаемый результат
Готовый архив хранится в ДвоичныеДанные; файловый архив не создаётся.
На что обратить внимание
Это разбор старого ZIP API для сопровождения существующих модулей. В справке 8.5 его использование не рекомендуется с 8.3.26; для нового кода выбирайте ЗаписьФайлаАрхива и ЧтениеФайлаАрхива.
Не закрывайте поток раньше объекта чтения архива. После завершения не используйте закрытые объекты.
Для больших пакетов память ограничена; потоковый или файловый вариант выбирается исходя из объёма данных.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.