Архивация

Здесь описаны функции для работы с архивами zip и tar.gz.

Функции

ArchiveName(finfo fi, str root) str

Функция ArchiveName объединяет поля Name и Dir в переменной типа finfo и возвращает путь файла для архива относительно корневого пути root.

CloseTarGz(handle h)

Функция CloseTarGz заканчивает создание .tar.gz архива. Параметр h - это идентификатор, который был возвращен функцией CreateTarGz.

CloseZip(handle h)

Функция CloseZip заканчивает создание .zip архива. Параметр h - это идентификатор, который был возвращен функцией CreateZip.

CreateTarGz(str name) handle

Функция CreateTarGz начинает создание .tar.gz архива с указанным именем. Вы можете добавлять файлы в этот архив с помощью функции CompressFile. Функция возвращает идентификатор, который нужно будет закрыть с помощью функции CloseTarGz.

CreateZip(str name) handle

Функция CreateZip начинает создание .zip архива с указанным именем. Вы можете добавлять файлы в этот архив с помощью функции CompressFile. Функция возвращает идентификатор, который нужно будет закрыть с помощью функции CloseZip.

CompressFile(handle h, str fname, str packname)

Функция CompressFile добавляет указанный файл fname в создаваемый архив. Параметр packname содержит относительный путь и имя файла с которым он будет сохранен в архиве. В качестве разделителя нужно использовать символ /. Архив предварительно должен быть создан с помощью функций CreateZip или CreateTarGz.

handle zip = CreateZip(`my.zip`)
CompressFile(zip, `../data/my.txt`, `my.txt`)
CompressFile(zip, `/home/user/folder/copy.txt`, `folder/copy.txt`)
CloseZip(zip)

ReadTarGz(str name) arr.finfo

Функция ReadTarGz возвращает список файлов в указанном tar.gz архиве. Поле Name содержит имя файла вместе с относительным путем.

arr.finfo list = ReadTarGz(`my.tar.gz`)
for fi in list : Println( "\{fi.Name} \{fi.Size}")

ReadZip(str name) arr.finfo

Функция ReadZip возвращает список файлов в указанном zip архиве. Поле Name содержит имя файла вместе с относительным путем.

TarGz(str name, str path)

Функция TarGz упаковывает файл или содержимое директории path в .tar.gz архив с именем name.

TarGz("/home/user/out/my.tar.gz", `/home/user/docs`)

UnpackTarGz(str name, str path)

Функция UnpackTarGz распаковывает .tar.gz архив с именем name в директорию path.

UnpackTarGz("/home/user/out/my.tar.gz", `/home/user/olddocs`)

UnpackTarGz(str name, str path, arr pattern, arr ignore)

Функция UnpackTarGz выборочно распаковывает .tar.gz архив с именем name в директорию path. Массив pattern содержит шаблоны файлов, которые необходимо распаковать. Массив ignore содержит шаблоны файлов, которые необходимо пропустить. Параметры pattern и ignore могу быть пустыми массивами. Если шаблон начинается и заканчивается символом /, то он обрабатывается как регулярное выражение.

arr empty
arr doc = {`*.docx`, `/.txt$/`}
UnpackTarGz("/home/user/out/my.tar.gz", `/home/user/tmp`, doc, empty )

UnpackZip(str name, str path)

Функция UnpackZip распаковывает .zip архив с именем name в директорию path.

UnpackZip("/home/user/out/my.zip", `/home/user/olddocs`)

UnpackZip(str name, str path, arr pattern, arr ignore)

Функция UnpackZip выборочно распаковывает .zip архив с именем name в директорию path. Массив pattern содержит шаблоны файлов, которые необходимо распаковать. Массив ignore содержит шаблоны файлов, которые необходимо пропустить. Параметры pattern и ignore могу быть пустыми массивами. Если шаблон начинается и заканчивается символом /, то он обрабатывается как регулярное выражение.

arr empty
arr skip = {`/temp.pdf/`, `/.txt$/`}
UnpackZip("/home/user/out/my.tar.gz", `/home/user/tmp`, empty, skip )

Zip(str name, str path)

Функция Zip упаковывает файл или содержимое директории path в .zip архив с именем name.

Zip("/home/user/out/mydoc.zip", `/home/user/docs/important.docx`)