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

ЭлементZip

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

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

Сравнение

Ссылочное

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

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


См. также​

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


Свойства​

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

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

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

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

Примеры​

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

Имя​

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

Имя: Строка

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

Примеры​

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

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

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

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

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

Примеры​

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

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

ПутьВАрхиве​

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

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

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

Примеры​

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

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

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

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

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

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

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

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

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

Примеры​

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

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

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

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

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

Примеры​

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

Расширение​

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

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

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

Примеры​

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

Методы​

Зашифрован​

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

Примеры​

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

Сжат​

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


ЭтоКаталог​

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

Примеры​

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

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

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

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

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

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

Объект​

ВСтроку

ПолучитьТип

Представление