Стд::Архивация::ФайлZip
Объект для файловой работы с ZIP-архивом.
Методы выбрасывают исключения:
ИсключениеВводаВывода - если произошли ошибки чтения/записи.
ИсключениеДоступаКФайлу - при невозможности получить доступ к файлу архива.
Сравнение ссылочное
Иерархия типа
Базовые типы: Объект
Примеры
метод ЗаписатьСШифрованием(ФайлДляСжатия: Файл)
пер Архив = новый ФайлZip(Файлы.ПолучитьДомашнийКаталогПользователя().Путь + "/archive.zip", "password")
пер УровеньСжатияПоУмолчанию = УровеньСжатияZip.Максимальный
пер МетодШифрованияПоУмолчанию = МетодШифрованияZip.Aes256
Архив.Добавить(Файлы.ПолучитьДомашнийКаталогПользователя().Путь + "/КаталогСФайламиДляСжатия", "", УровеньСжатияПоУмолчанию, МетодШифрованияПоУмолчанию)
Архив.Добавить(ФайлДляСжатия, "", УровеньСжатияПоУмолчанию, МетодШифрованияПоУмолчанию)
Архив.Добавить(ФайлДляСжатия.ОткрытьПотокЧтения(), "КаталогСФайламиДляСжатия/ФайлДляСжатия_Копия", УровеньСжатияПоУмолчанию, Момент.Сейчас(), МетодШифрованияПоУмолчанию)
Архив.УстановитьКомментарий("Архив с КаталогСФайламиДляСжатия и файлом. Сделана копия. Пароль: password")
;
Конструкторы
ФайлZip
Создает объект файловой работы с ZIP-архивом на основании пути к архиву
Архив
и пароля
Пароль
.
КодировкаИменФайлов
используется для распаковки существующих файлов в архиве, не для добавления новых файлов.
Значение используется, если путь элемента архива не сохранен в utf8 кодировке внутри архива.
Рекомендуется использовать в качестве пароля символы латинского алфавита и цифры для совместимости с другими архиваторами.
Поддерживаются только архивы с элементами сжатыми по алгоритму Deflate или Store (без сжатия). Другие алгоритмы, в частности Deflate64 или BZip2, не поддерживаются.
Если файл архива не существует, то он будет создан, отдельная команда не требуется.
Если файл архива уже существует и удовлетворяет стандарту zip, то будет использоваться этот файл.
Если файл уже существует, но является пустым или это не архив zip, то последующий вызов методов файла архива вернет ошибку.
Примеры
метод СоздатьФайлАрхиваИДобавитьФайл(ИмяФайла: Строка, Пароль: Строка, ФайлДляСжатия: Файл): ФайлZip
пер Архив = новый ФайлZip(Файлы.ПолучитьДомашнийКаталогПользователя().Путь + "/" + ИмяФайла, Пароль)
попытка
Архив.Добавить(Источник = ФайлДляСжатия)
поймать И: Исключение
;
возврат Архив
;
Методы
ВСтроку
Переопределение:
ВСтроку
Добавить
Перегрузка:
Добавить(Источник:
ПотокЧтения, ПутьВАрхиве:
Строка, УровеньСжатия:
УровеньСжатияZip = УровеньСжатияZip.Нормальный, ВремяИзменения:
Момент? = Неопределено, МетодШифрования:
МетодШифрованияZip? = Неопределено)
Добавляет файл Источник
в существующий архив по пути в архиве ПутьВАрхиве
с уровнем сжатия УровеньСжатия
и методом шифрования МетодШифрования
.
Если архива нет, то создает его. Для каталога добавляет в архив сам каталог и его содержимое.
Исключения
ИсключениеНедопустимыйАргумент - если указан МетодШифрования, но объект создан без указания пароля.
Примеры
метод ДобавитьФайлВАрхив(ФайлДляСжатия: Файл, Архив: ФайлZip)
Архив.Добавить(Источник = ФайлДляСжатия, УровеньСжатия = УровеньСжатияZip.Нормальный)
;
Добавить
Перегрузка:
Добавить(Источник:
Файл|
Строка, ПутьВАрхиве:
Строка = "", УровеньСжатия:
УровеньСжатияZip = УровеньСжатияZip.Нормальный, МетодШифрования:
МетодШифрованияZip? = Неопределено)
Добавляет содержимое потока Источник
в архив по данному пути ПутьВАрхиве
с уровнем сжатия УровеньСжатия
, временем изменения элемента ВремяИзменения
и методом шифрования МетодШифрования
.
По умолчанию время изменения элемента - текущее на момент начала записи.
Исключения
ИсключениеНедопустимыйАргумент - если указан МетодШифрования, но объект создан без указания пароля.
Примеры
метод ДобавитьФайлВАрхив(ФайлДляСжатияПоток: ПотокЧтения, Архив: ФайлZip, ФайлПутьВАрхиве: Строка)
Архив.Добавить(Источник = ФайлДляСжатияПоток, ПутьВАрхиве = ФайлПутьВАрхиве, УровеньСжатия = УровеньСжатияZip.Максимальный)
;
ЕстьЗашифрованныеФайлы
ЕстьЗашифрованныеФайлы(): Булево
Возвращает признак зашифрованности архива.
Архив считается зашифрованным, если хотя бы один файл-элемент зашифрован.
Примеры
метод УдалитьЗашифрованныеФайлыВАрхиве(Архив: ФайлZip)
если Архив.ЕстьЗашифрованныеФайлы()
Архив.Элементы()
.Фильтровать(Элемент -> не Элемент.ЭтоКаталог() и Элемент.Зашифрован())
.ДляКаждого(Элемент -> Архив.Удалить(Элемент))
;
;
Извлечь
Распаковывает элемент архива
Элемент
по пути
МестоНазначения
.
Примеры
метод ИзвлечьФайлИзАрхива(Архив: ФайлZip, ФайлПутьВАрхиве: Строка, КаталогРаспаковки: Строка)
Архив.Извлечь(ФайлПутьВАрхиве, Файлы.ПолучитьДомашнийКаталогПользователя().Путь + "/" + КаталогРаспаковки)
;
метод ИзвлечьФайлыПоРасширениюИзАрхива(Архив: ФайлZip, РасширениеФайла: Строка, КаталогРаспаковки: Строка)
для Элемент из Архив.Элементы()
если Элемент.Расширение == РасширениеФайла и Элемент.ВремяИзменения >= Момент.Сейчас() - 1д
Архив.Извлечь(Элемент, новый Файл(Файлы.ПолучитьДомашнийКаталогПользователя().Путь, [КаталогРаспаковки, РасширениеФайла]))
;
;
;
ИзвлечьВсе
ИзвлечьВсе(
МестоНазначения: Файл|Строка,
ВосстанавливатьКаталоги: Булево = Истина)
Распаковывает весь архив по пути
МестоНазначения
.
Если
ВосстанавливатьКаталоги
==
Ложь
, то распакуются только файлы.
Файлы с одинаковыми именами перезаписывают друг друга в порядке следования родительских элементов (каталогов) по алфавиту
Исключения
ИсключениеДоступаКФайлу - при невозможности получить доступ к файлу архива или месту назначения.
Примеры
метод ИзвлечьВсеСКаталогами(Архив: ФайлZip, КаталогНазначения: Строка)
Архив.ИзвлечьВсе(КаталогНазначения)
;
метод ИзвлечьВсеБезКаталогов(Архив: ФайлZip, КаталогНазначения: Строка)
Архив.ИзвлечьВсе(КаталогНазначения, Ложь)
;
Найти
Возвращает все элементы архива, в которых содержится подстрока
ЧастьПути
.
При этом разделители в пути не важны.
Регулярный выражения не поддерживаются.
Примеры
метод НайтиИПереписатьФайл(ПутьКАрхиву: Строка, ИмяФайла: Строка, НовыеДанные: ПотокЧтения)
пер Архив = новый ФайлZip(ПутьКАрхиву)
пер Элементы = Архив.Найти(ИмяФайла)
если Элементы.Размер() != 1
выбросить новый ИсключениеНедопустимыйАргумент()
;
пер ИскомыйЭлемент = Элементы.Получить(0)
Архив.Удалить(ИскомыйЭлемент)
Архив.Добавить(НовыеДанные, ИскомыйЭлемент.ПутьВАрхиве, УровеньСжатияZip.Максимальный)
;
ПолучитьКомментарий
Возвращает комментарий к архиву.
Удалить
Удаляет элемент
Элемент
из архива.
При использовании удаления через строковой путь к элементу разделители не важны.
Для каталогов в архиве будут удалены все подкаталоги и файлы.
Исключения
ИсключениеВводаВывода - если элемент не найден.
Примеры
мет од УдалитьФайлВАрхиве(Архив: ФайлZip, ФайлПутьВАрхиве: Строка)
Архив.Удалить(ФайлПутьВАрхиве)
;
метод УдалитьКаталогВАрхиве(Архив: ФайлZip, КаталогПутьВАр хиве: Строка)
Архив.Удалить(КаталогПутьВАрхиве)
;
УстановитьКомментарий
УстановитьКомментарий(Комментарий: Строка)
Устанавливает комментарий
Комментарий
к архиву.
Элементы
Возвращает все элементы zip архива.
Примеры
метод ВычислитьРазмерНесжатогоВАрхиве(Архив: ФайлZip): РазмерБайтов
пер ОбщийРазмерБайтов = 0б
для Элемент из Архив.Элементы()
ОбщийРазмерБайтов += Элемент.РазмерНесжатого
;
возврат ОбщийРазмерБайтов
;
метод ВычислитьРазмерСжатогоВАрхиве(Архив: ФайлZip, Каталог: Строка): РазмерБайтов
пер ОбщийРазмерБайтов = 0б
для Элемент из Архив.Элементы()
если Элемент.ПутьВАрхиве.Содержит(Каталог, Истина)
ОбщийРазмерБайтов += Элемент.РазмерСжатого
;
;
возврат ОбщийРазмерБайтов
;
Список унаследованных методов
Объект
ПолучитьТип, Представление