Перейти к основному содержимому

ЭлементZip

Стд::Архивация::ЭлементZip

Описание элемента в ZIP-файле.

Сравнение ссылочное

Иерархия типа

Базовые типы: Объект


См. также

ФайлZip, ЧтениеZip


Свойства

ВремяИзменения

ТолькоЧтение

ВремяИзменения: Момент

Момент изменения файла.

Примеры

метод ИзвлечьФайлыПоРасширениюИзАрхива(Архив: ФайлZip, РасширениеФайла: Строка, КаталогРаспаковки: Строка)
// Распаковка элементов архива с расширением РасширениеФайла, измененных за последние сутки,
// в домашний каталог КаталогРаспаковки и подкаталог РасширениеФайла,
// например, файлы с расширением "pdf", в каталог "КаталогРаспаковки/pdf"
для Элемент из Архив.Элементы()
если Элемент.Расширение == РасширениеФайла и Элемент.ВремяИзменения >= Момент.Сейчас() -
Архив.Извлечь(Элемент, новый Файл(Файлы.ПолучитьДомашнийКаталогПользователя().Путь, [КаталогРаспаковки, РасширениеФайла]))
;
;
;

Имя

ТолькоЧтение

Имя: Строка

Имя элемента архива. Если при создании архива не использовалась кодировка UTF-8 для имен элементов архива, то будет использована кодировка указанная при создании читателя архива, или Cp866.

Примеры

метод ПолучитьИменаЭлементовАрхива(Архив: ФайлZip): Массив<Строка>
пер ИменаЭлементов: Массив<Строка> = Архив.Элементы().Преобразовать(Элемент -> Элемент.Имя)
возврат ИменаЭлементов
;

ИмяБезРасширения

ТолькоЧтение

ИмяБезРасширения: Строка

Имя элемента архива без расширения. Если при создании архива не использовалась кодировка UTF-8 для имен элементов архива, то будет использована кодировка указанная при создании читателя архива, или Cp866.

Примеры

метод ИзвлечьФайлСНовымРасширением(Архив: ФайлZip, ИмяФайла: Строка, КаталогРаспаковки: Строка)
// Поиск файла - точный путь к файлу в архиве неизвестен, но известно имя файла
пер Элементы = Архив.Найти(ИмяФайла)

// Извлечение найденных файлов в каталог КаталогРаспаковки с заменой расширения на "doc",
// например, файл test.bin будет извлечен как test.doc
пер Каталог = новый Файл(Файлы.ПолучитьДомашнийКаталогПользователя().Путь, [КаталогРаспаковки])
для Элемент из Элементы
если не Элемент.ЭтоКаталог()
Архив.Извлечь(Элемент, Каталог)
Файлы.Переименовать(новый Файл(Элемент.ПутьВАрхиве, Каталог), Элемент.ИмяБезРасширения + ".doc")
;
;
;

ПутьВАрхиве

ТолькоЧтение

ПутьВАрхиве: Строка

Путь к элементу в архиве. Если при создании архива не использовалась кодировка UTF-8 для имен элементов архива, то будет использована кодировка указанная при создании читателя архива, или Cp866.

Примеры

метод ПолучитьПутиЭлементовАрхива(Архив: ФайлZip): Массив<Строка>
пер ПутиЭлементов: Массив<Строка> = Архив.Элементы().Преобразовать(Элемент -> Элемент.ПутьВАрхиве)
возврат ПутиЭлементов
;
метод ВычислитьРазмерСжатогоВАрхиве(Архив: ФайлZip, Каталог: Строка): РазмерБайтов
// Вычисление общего размера сжатых файлов в каталоге архива, например, "КаталогСФайламиДляСжатия"
пер ОбщийРазмерБайтов =
для Элемент из Архив.Элементы()
если Элемент.ПутьВАрхиве.Содержит(Каталог, Истина)
ОбщийРазмерБайтов += Элемент.РазмерСжатого
;
;
возврат ОбщийРазмерБайтов
;
метод РаспаковатьАрхив(КаталогРаспаковки: Файл, ВходнойАрхив: Файл, Пароль: Строка)
// Создание потока чтения файла архива
исп АрхивПотокЧтения = ВходнойАрхив.ОткрытьПотокЧтения()
пер ЧтениеZip = новый ЧтениеZip(АрхивПотокЧтения, Пароль)

пока ЧтениеZip.Следующий()
// Получение элемента архива
пер ЭлементZip = ЧтениеZip.ПолучитьЭлемент()

если не ЭлементZip.ЭтоКаталог()
// Создание объекта файла, в который будет выполнена распаковка элемента архива.
// ПутьВАрхиве содержит полный путь со всеми каталогами и именем файла, все каталоги будут созданы,
// поэтому пропускаются элементы архива, которые являются каталогами
пер Файл = Файлы.Создать(новый Файл(КаталогРаспаковки.Путь, [ЭлементZip.ПутьВАрхиве]))

// Открытие потока записи, будет закрыт автоматически, так как объявлен через "исп"
исп ФайлПотокЗаписи = Файл.ОткрытьПотокЗаписи()

// Запись байтов элемента архива в поток записи целевого файла
ФайлПотокЗаписи.Записать(ЧтениеZip.ПолучитьПотокЭлемента().ПрочитатьКакБайты())
;
;
;

РазмерНесжатого

ТолькоЧтение

РазмерНесжатого: РазмерБайтов

Размер несжатого файла.

Примеры

метод ВычислитьРазмерНесжатогоВАрхиве(Архив: ФайлZip): РазмерБайтов
// Вычисление общего размера несжатых файлов в архиве
пер ОбщийРазмерБайтов =
для Элемент из Архив.Элементы()
ОбщийРазмерБайтов += Элемент.РазмерНесжатого
;
возврат ОбщийРазмерБайтов
;

РазмерСжатого

ТолькоЧтение

РазмерСжатого: РазмерБайтов

Размер сжатого файла.

Примеры

метод ВычислитьРазмерСжатогоВАрхиве(Архив: ФайлZip, Каталог: Строка): РазмерБайтов
// Вычисление общего размера сжатых файлов в каталоге архива, например, "КаталогСФайламиДляСжатия"
пер ОбщийРазмерБайтов =
для Элемент из Архив.Элементы()
если Элемент.ПутьВАрхиве.Содержит(Каталог, Истина)
ОбщийРазмерБайтов += Элемент.РазмерСжатого
;
;
возврат ОбщийРазмерБайтов
;

Расширение

ТолькоЧтение

Расширение: Строка

Расширение элемента архива.

Примеры

метод ИзвлечьФайлыПоРасширениюИзАрхива(Архив: ФайлZip, РасширениеФайла: Строка, КаталогРаспаковки: Строка)
// Распаковка элементов архива с расширением РасширениеФайла, измененных за последние сутки,
// в домашний каталог КаталогРаспаковки и подкаталог РасширениеФайла,
// например, файлы с расширением "pdf", в каталог "КаталогРаспаковки/pdf"
для Элемент из Архив.Элементы()
если Элемент.Расширение == РасширениеФайла и Элемент.ВремяИзменения >= Момент.Сейчас() -
Архив.Извлечь(Элемент, новый Файл(Файлы.ПолучитьДомашнийКаталогПользователя().Путь, [КаталогРаспаковки, РасширениеФайла]))
;
;
;

Методы

Зашифрован

Зашифрован(): Булево
Возвращает признак того, что файл зашифрован.

Примеры

метод УдалитьЗашифрованныеФайлыВАрхиве(Архив: ФайлZip)
// Удаление всех зашифрованных файлов в архиве
если Архив.ЕстьЗашифрованныеФайлы()
Архив.Элементы()
.Фильтровать(Элемент -> не Элемент.ЭтоКаталог() и Элемент.Зашифрован())
.ДляКаждого(Элемент -> Архив.Удалить(Элемент))
;
;

Сжат

Сжат(): Булево
Возвращает признак сжатия элемента.


ЭтоКаталог

ЭтоКаталог(): Булево
Возвращает признак того, что элемент является каталогом.

Примеры

метод РаспаковатьАрхив(КаталогРаспаковки: Файл, ВходнойАрхив: Файл, Пароль: Строка)
// Создание потока чтения файла архива
исп АрхивПотокЧтения = ВходнойАрхив.ОткрытьПотокЧтения()
пер ЧтениеZip = новый ЧтениеZip(АрхивПотокЧтения, Пароль)

пока ЧтениеZip.Следующий()
// Получение элемента архива
пер ЭлементZip = ЧтениеZip.ПолучитьЭлемент()

если не ЭлементZip.ЭтоКаталог()
// Создание объекта файла, в который будет выполнена распаковка элемента архива.
// ПутьВАрхиве содержит полный путь со всеми каталогами и именем файла, все каталоги будут созданы,
// поэтому пропускаются элементы архива, которые являются каталогами
пер Файл = Файлы.Создать(новый Файл(КаталогРаспаковки.Путь, [ЭлементZip.ПутьВАрхиве]))

// Открытие потока записи, будет закрыт автоматически, так как объявлен через "исп"
исп ФайлПотокЗаписи = Файл.ОткрытьПотокЗаписи()

// Запись байтов элемента архива в поток записи целевого файла
ФайлПотокЗаписи.Записать(ЧтениеZip.ПолучитьПотокЭлемента().ПрочитатьКакБайты())
;
;
;

Список унаследованных методов

Объект

ВСтроку, ПолучитьТип, Представление