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

Hérite de : RefCounted < Object

Permet de lire le contenu d'un fichier ZIP.

Description

Cette classe implémente un lecteur qui peut extraire le contenu de fichiers individuels dans une archive ZIP. Voir aussi ZIPPacker.

# Lire un seul fichier d'un fichier ZIP.
func read_zip_file():
    var lecteur = ZIPReader.new()
    var err = lecteur.open("user://archive.zip")
    if err!= OK:
        return PackedByteArray()
    var res = lecteur.read_file("hello.txt")
    lecteur.close()
    return res

# Extraire tous les fichiers de l'archive ZIP, préservant les dossiers dedans.
# Cela fonctionne comme la fonctionnalité "Tout Extraire" des gestionnaires d'archive.
func extract_all_from_zip():
    var lecteur = ZIPReader.new()
    lecteur.open("res://archive.zip")

    # Dossier de destination pour les fichiers extraits (ce dossier doit exister avant l'extraction).
    # Les archives ZIP ne mettent pas toujours tout dans un dossier racine
    # ce qui signifie que des fichiers/dossiers peuvent être créés dans le dossier `doss_racine` après l'extraction.
    var doss_racine = DirAccess.open("user://")

    var fichiers = lecteur.get_files()
    for chemin_fichier in fichiers:
        # Si l'entrée actuelle est un dossier.
        if chemin_fichier.ends_with("/"):
            doss_racine.make_dir_recursive(chemin_fichier)
            continue

        # Écrire le contenu du fichier, créant automatiquement les dossiers si besoin.
        # Les archives ZIP ne sont pas triées strictement, nous devons donc faire ceci au cas où
        # l'entrée du fichier arrive avant l'entrée du dossier.
        doss_racine.make_dir_recursive(doss_racine.get_current_dir().path_join(chemin_fichier).get_base_dir())
        var fichier = FileAccess.open(doss_racine.get_current_dir().path_join(chemin_fichier), FileAccess.WRITE)
        var buffer = lecteur.read_file(chemin_fichier)
        fichier.store_buffer(buffer)

Méthodes

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)


Descriptions des méthodes

Error close() 🔗

Ferme les ressources sous-jacentes utilisées par cette instance.


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

Renvoie true si le fichier existe dans l'archive zip chargée.

Doit être appelée après open().


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

Renvoie le niveau de compression du fichier dans l'archive zip chargée. Renvoie -1 si le fichier n'existe pas ou si une autre erreur se produit. Doit être appelée après open().


PackedStringArray get_files() 🔗

Renvoie la liste des noms de tous les fichiers de l'archive chargée.

Doit être appelée après open().


Error open(path: String) 🔗

Ouvre l'archive zip au chemin path donné et lit son index de fichier.


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

Charge l'intégralité du contenu d'un fichier dans l'archive zip chargée en mémoire et le renvoie.

Doit être appelée après open().