ZIPReader

Наследует: RefCounted < Object

Позволяет читать содержимое ZIP-файла.

Описание

Этот класс реализует считываниеь, с помощью которого можно извлекать содержимое отдельных файлов внутри архива ZIP. См. также ZIPPacker.

# Прочитать один файл из ZIP-архива.
func read_zip_file():
    var reader = ZIPReader.new()
    var err = reader.open("user://archive.zip")
    if err != OK:
        return PackedByteArray()
    var res = reader.read_file("hello.txt")
    reader.close()
    return res

# Извлеките все файлы из ZIP-архива, сохранив каталоги внутри.
# Это похоже на функцию «Извлечь все» в большинстве менеджеров архивов.
func extract_all_from_zip():
    var reader = ZIPReader.new()
    reader.open("res://archive.zip")

    # Каталог назначения для извлеченных файлов (эта папка должна существовать до извлечения).
    # Не все ZIP-архивы помещают все в одну корневую папку,
    # это означает, что после извлечения в `root_dir` может быть создано несколько файлов/папок.
    var root_dir = DirAccess.open("user://")

    var files = reader.get_files()
    for file_path in files:
        # If the current entry is a directory.
        if file_path.ends_with("/"):
            root_dir.make_dir_recursive(file_path)
            continue

        # Записывайте содержимое файлов, автоматически создавая папки при необходимости.
        # Не все ZIP-архивы строго упорядочены, поэтому нам нужно сделать это на всякий случай.
        # запись файла предшествует записи папки.
        root_dir.make_dir_recursive(root_dir.get_current_dir().path_join(file_path).get_base_dir())
        var file = FileAccess.open(root_dir.get_current_dir().path_join(file_path), FileAccess.WRITE)
        var buffer = reader.read_file(file_path)
        file.store_buffer(buffer)

Методы

Error

close()

bool

file_exists(path: String, case_sensitive: bool = true)

int

get_compression_level(path: String, case_sensitive: bool = true)

PackedStringArray

get_files()

Error

open(path: String)

PackedByteArray

read_file(path: String, case_sensitive: bool = true)


Описания метода

Error close() 🔗

Закрывает основные ресурсы, используемые этим экземпляром.


bool file_exists(path: String, case_sensitive: bool = true) 🔗

Возвращает true, если файл содержится в загруженном zip архиве.

Должен быть вызван после open().


int get_compression_level(path: String, case_sensitive: bool = true) 🔗

Возвращает уровень сжатия файла в загруженном zip-архиве. Возвращает -1, если файл не существует или произошла какая-либо другая ошибка. Необходимо вызывать после open().


PackedStringArray get_files() 🔗

Возвращает список всех имён файлов в загруженном архиве.

Должен быть вызван после open().


Error open(path: String) 🔗

Открывает zip-архив по переданному path и читает его индекс файла.


PackedByteArray read_file(path: String, case_sensitive: bool = true) 🔗

Загружает все содержимое файла из загруженного zip-архива в память и возвращает его.

Должен вызываться после open().