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` after extraction.
    var root_dir = DirAccess.open("user://")

    var files = reader.get_files()
    for file_path in files:
        # Якщо поточний запис є каталогом.
        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().