ZIPReader

Hereda: RefCounted < Object

Permite leer el contenido de un archivo ZIP.

Descripción

Esta clase implementa un lector que puede extraer el contenido de archivos individuales dentro de un archivo ZIP. Véase también ZIPPacker.

# Leer un solo archivo de un archivo 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

# Extraer todos los archivos de un archivo ZIP, conservando los directorios dentro de él.
# Esto actúa como la funcionalidad de "Extraer todo" de la mayoría de los gestores de archivos.
func extract_all_from_zip():
    var reader = ZIPReader.new()
    reader.open("res://archive.zip")

    # Directorio de destino para los archivos extraídos (esta carpeta debe existir antes de la extracción).
    # No todos los archivos ZIP ponen todo en una sola carpeta raíz,
    # lo que significa que varios archivos/carpetas pueden ser creados en `root_dir` después de la extracción.
    var root_dir = DirAccess.open("user://")

    var files = reader.get_files()
    for file_path in files:
        # Si la entrada actual es un directorio.
        if file_path.ends_with("/"):
            root_dir.make_dir_recursive(file_path)
            continue

        # Escribir el contenido del archivo, creando carpetas automáticamente cuando sea necesario.
        # No todos los archivos ZIP están estrictamente ordenados, así que necesitamos hacer esto en caso de que
        # la entrada del archivo venga antes que la entrada de la carpeta.
        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)

Métodos

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)


Descripciones de Métodos

Error close() 🔗

Cierra los recursos subyacentes utilizados por esta instancia.


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

Devuelve true si el archivo existe en el archivo .zip cargado.

Debe llamarse después de open().


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

Devuelve el nivel de compresión del archivo en el archivo .zip cargado. Devuelve -1 si el archivo no existe o se produce algún otro error. Debe llamarse después de open().


PackedStringArray get_files() 🔗

Devuelve la lista de nombres de todos los archivos del archivo cargado.

Debe llamarse después de open().


Error open(path: String) 🔗

Abre el archivo zip en la path dada y lee su índice de archivos.


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

Carga en memoria todo el contenido de un archivo .zip cargado y lo devuelve.

Debe llamarse después de open().