Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

ZIPReader

Eredita: RefCounted < Object

Consente di leggere il contenuto di un file ZIP.

Descrizione

Questa classe implementa un lettore che può estrarre il contenuto di singoli file all'interno di un archivio ZIP. Vedere anche ZIPPacker.

# Leggi un singolo file da un archivio 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

# Estrai tutti i file da un archivio ZIP, preservando le cartelle contenute in esso.
# Funziona come la funzionalità "Estrai tutto" della maggior parte dei gestori di archivi.
func extract_all_from_zip():
    var reader = ZIPReader.new()
    reader.open("res://archive.zip")

    # Cartella di destinazione per i file estratti (questa cartella deve esistere prima dell'estrazione).
    # Non tutti gli archivi ZIP mettono tutto in un'unica cartella radice,
    # il che significa che potrebbero essere creati diversi file/cartelle in `root_dir` dopo l'estrazione.
    var root_dir = DirAccess.open("user://")

    var files = reader.get_files()
    for file_path in files:
        # Se la voce attuale è una cartella.
        if file_path.ends_with("/"):
            root_dir.make_dir_recursive(file_path)
            continue

        # Scrivi il contenuto dei file, creando automaticamente le cartelle se necessario.
        # Non tutti gli archivi ZIP sono rigorosamente ordinati, quindi è necessario farlo nel caso
        # in cui la voce del file venga prima della voce della cartella.
        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)

Metodi

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)


Descrizioni dei metodi

Error close() 🔗

Chiude le risorse sottostanti utilizzate da questa istanza.


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

Restituisce true se il file esiste nell'archivio zip caricato.

Deve essere chiamato dopo open().


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

Restituisce il livello di compressione del file nell'archivio zip caricato. Restituisce -1 se il file non esiste o si verifica qualunque altro errore. Deve essere chiamato dopo open().


PackedStringArray get_files() 🔗

Restituisce la lista dei nomi di tutti i file nell'archivio caricato.

Deve essere chiamato dopo open().


Error open(path: String) 🔗

Apre l'archivio zip al percorso path e legge il suo indice di file.


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

Carica in memoria l'intero contenuto di un file nell'archivio zip caricato e lo restituisce.

Deve essere chiamato dopo open().