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.

DirAccess

Hérite de : RefCounted < Object

Fournit des méthodes de gestion de répertoires et de leur contenu.

Description

Cette classe est utilisée pour gérer des répertoires et leur contenu, même en dehors du dossier du projet.

DirAccess ne peut pas être instantané directement. Au lieu de cela, il est créé avec une méthode statique qui prend un chemin pour lequel il sera ouvert.

La plupart des méthodes ont une alternative statique qui peut être utilisée sans créer de DirAccess. Les méthodes statiques ne supportent que les chemins absolus (y compris res:// et user://).

# Standard
var repertoire = DirAccess.open("user://niveaux")
repertoire.make_dir("monde1")
# Statique
DirAccess.make_dir_absolute("user://niveaux/monde1")

Note : L'accès aux répertoires du projet («res://») une fois exporté peut se comporter de façon inattendue puisque certains fichiers sont convertis en formats spécifiques au moteur et leurs fichiers sources originaux peuvent ne pas être présents dans le paquetage PCK attendu. À cause de cela, pour accéder aux ressources dans un projet exporté, il est recommandé d'utiliser ResourceLoader au lieu de FileAccess.

Voici un exemple sur la façon d'itérer à travers les fichiers d'un répertoire :

func contenu_repertoire(chemin):
    var repertoire = DirAccess.open(chemin)
    if repertoire:
        repertoire.list_dir_begin()
        var nom_fichier = repertoire.get_next()
        while nom_fichier!= "":
            if repertoire.current_is_dir():
                print("Répertoire trouvé : " + nom_fichier)
            else:
                print("Fichier trouvé : " + nom_fichier)
            nom_fichier = dir.get_next()
    else:
        print("Une erreur s'est produite lors de l'accès au chemin.")

Gardez à l'esprit que les noms de fichiers peuvent changer ou être remappés après l'export. Si vous voulez voir la liste réelle des fichiers de ressources comme elle apparaît dans l'éditeur, utilisez ResourceLoader.list_directory() à la place.

Tutoriels

Propriétés

bool

include_hidden

bool

include_navigational

Méthodes

Error

change_dir(to_dir: String)

Error

copy(from: String, to: String, chmod_flags: int = -1)

Error

copy_absolute(from: String, to: String, chmod_flags: int = -1) static

Error

create_link(source: String, target: String)

DirAccess

create_temp(prefix: String = "", keep: bool = false) static

bool

current_is_dir() const

bool

dir_exists(path: String)

bool

dir_exists_absolute(path: String) static

bool

file_exists(path: String)

String

get_current_dir(include_drive: bool = true) const

int

get_current_drive()

PackedStringArray

get_directories()

PackedStringArray

get_directories_at(path: String) static

int

get_drive_count() static

String

get_drive_label(idx: int) static

String

get_drive_name(idx: int) static

PackedStringArray

get_files()

PackedStringArray

get_files_at(path: String) static

String

get_filesystem_type() const

String

get_next()

Error

get_open_error() static

int

get_space_left()

bool

is_bundle(path: String) const

bool

is_case_sensitive(path: String) const

bool

is_equivalent(path_a: String, path_b: String) const

bool

is_link(path: String)

Error

list_dir_begin()

void

list_dir_end()

Error

make_dir(path: String)

Error

make_dir_absolute(path: String) static

Error

make_dir_recursive(path: String)

Error

make_dir_recursive_absolute(path: String) static

DirAccess

open(path: String) static

String

read_link(path: String)

Error

remove(path: String)

Error

remove_absolute(path: String) static

Error

rename(from: String, to: String)

Error

rename_absolute(from: String, to: String) static


Descriptions des propriétés

bool include_hidden 🔗

  • void set_include_hidden(value: bool)

  • bool get_include_hidden()

Si true, les fichiers cachés sont inclus lors de la navigation dans le répertoire.

Affecte list_dir_begin(), get_directories() et get_files().


bool include_navigational 🔗

  • void set_include_navigational(value: bool)

  • bool get_include_navigational()

Si true, . et .. sont inclus lors de la navigation dans le répertoire.

Affecte list_dir_begin() et get_directories().


Descriptions des méthodes

Error change_dir(to_dir: String) 🔗

Change le dossier actuellement ouvert en celui donné en argument. L'argument peut être relatif au répertoire actuel (par exemple nouveau_dossier ou ./nouveau_dossier), ou être un chemin absolu (par exemple /tmp/nouveau_dossier ou res://un_dossier/nouveau_dossier).

Renvoie une des constantes de code Error (et @GlobalScope.OK en cas de succès).

Note : Le nouveau répertoire doit être dans la même portée, par exemple lorsque vous avez ouvert un dossier à l'intérieur de res://, vous ne pouvez pas le modifier en le répertoire user://. Si vous avez besoin d'ouvrir un répertoire dans une autre portée d'accès, utilisez open() pour créer une nouvelle instance.


Error copy(from: String, to: String, chmod_flags: int = -1) 🔗

Copie le fichier à l'emplacement from vers la destination to. Ces deux arguments devraient contenir des chemins vers des fichiers, soit relatifs soit absolus. Si le fichier de destination existe et qu'il n'est pas protégé pour l'accès, il sera écrasé.

Si chmod_flags est différent de -1, les permissions Unix pour le chemin de destination seront définies à la valeur fournie, si disponible sur le système d'exploitation actuel.

Renvoie une des constantes de code Error (@GlobalScope.OK en cas de réussite).


Error copy_absolute(from: String, to: String, chmod_flags: int = -1) static 🔗

Version statique de copy(). Supporte seulement les chemins absolus.


Crée un lien symbolique entre des fichiers ou des dossiers.

Note : Sur Windows, cette méthode ne fonctionne que si l'application s'exécute avec des privilèges élevés ou que le Mode Développeur est activé.

Note : Cette méthode est implémentée sur macOS, Linux et Windows.


DirAccess create_temp(prefix: String = "", keep: bool = false) static 🔗

Crée un répertoire temporaire. Ce répertoire sera libéré lorsque le DirAccess renvoyé est libéré.

Si prefix n'est pas vide, il sera préfixé au nom du répertoire, séparé par un -.

Si keep vaut true, le répertoire n'est pas supprimé lorsque le DirAccess renvoyé est libéré.

Renvoie null si l'ouverture du répertoire a échoué. Vous pouvez utiliser get_open_error() pour vérifier l'erreur qui s'est produite.


bool current_is_dir() const 🔗

Renvoie si l'élément actuellement traité lors du dernier appel à get_next() est un dossier (le dossier actuel . et le dossier parent .. comptent aussi des dossiers ordinaires pour cette méthode).


bool dir_exists(path: String) 🔗

Renvoie si le répertoire cible existe. L'argument peut être relatif au répertoire courant, ou être un chemin absolu.

Note : Le bool renvoyé dans l'éditeur et après l'export lorsqu'utilisé sur un chemin dans le répertoire res:// peut être différent. Certains fichiers sont convertis en formats spécifiques au moteur lorsqu'ils sont exportés, pouvant potentiellement modifier la structure du répertoire.


bool dir_exists_absolute(path: String) static 🔗

Version statique de dir_exists(). Supporte seulement les chemins absolus.

Note : Le bool renvoyé dans l'éditeur et après l'export lorsqu'utilisé sur un chemin dans le répertoire res:// peut être différent. Certains fichiers sont convertis en formats spécifiques au moteur lorsqu'ils sont exportés, pouvant potentiellement modifier la structure du répertoire.


bool file_exists(path: String) 🔗

Renvoie si le fichier cible existe. L'argument peut être relatif au répertoire courant, ou être un chemin absolu.

Pour un équivalent statique, utilisez FileAccess.file_exists().

Note : De nombreux types de ressources sont importés (par ex. textures ou fichiers sonores), et leur ressource source ne sera pas incluse dans le jeu exporté, car seule la version importée est utilisée. Voir ResourceLoader.exists() pour une approche alternative qui prend en compte la ré-association des ressources.


String get_current_dir(include_drive: bool = true) const 🔗

Renvoie le chemin absolu vers le dossier actuellement ouvert (par ex. : res://folder ou C:\tmp\folder).


int get_current_drive() 🔗

Renvoie l'index de disque du répertoire actuellement ouvert. Voir get_drive_name() pour convertir l'index renvoyé en le nom du lecteur.


PackedStringArray get_directories() 🔗

Renvoie un PackedStringArray contenant des noms de fichiers du contenu du répertoire, à l'exception des fichiers. Le tableau est trié par ordre alphabétique.

Affectée par include_hidden et include_navigational.

Note : Les répertoires renvoyés dans l'éditeur et après l'export dans le répertoire res:// peuvent différer puisque certains fichiers sont convertis en formats spécifiques aux moteurs lorsqu'ils sont exportés.


PackedStringArray get_directories_at(path: String) static 🔗

Renvoie un PackedStringArray contenant des noms de fichiers du contenu du répertoire, à l'exception des fichiers, au chemin path donné. Le tableau est trié par ordre alphabétique.

Utilisez get_directories() si vous voulez plus de contrôle sur ce qui est inclus

Note : Les répertoires renvoyés dans l'éditeur et après l'export dans le répertoire res:// peuvent différer puisque certains fichiers sont convertis en formats spécifiques aux moteurs lorsqu'ils sont exportés.


int get_drive_count() static 🔗

Sur Windows, renvoie le nombre de disque (partitions) montés sur le système de fichiers actuel.

Sur macOS et Android, renvoie le nombre de volumes montés.

Sur Linux, renvoie le nombre de volumes montés, ainsi que les favoris GTK 3.

Pour les autres plates-formes, la méthode renvoie 0.


String get_drive_label(idx: int) static 🔗

On Windows, returns the label of the drive (partition) passed as an argument.

On other platforms, or if the requested drive does not exist, returns an empty String.


String get_drive_name(idx: int) static 🔗

On Windows, returns the name of the drive (partition) passed as an argument (e.g. C:).

On macOS, returns the path to the mounted volume passed as an argument.

On Linux, returns the path to the mounted volume or GTK 3 bookmark passed as an argument.

On Android (API level 30+), returns the path to the mounted volume as an argument.

On other platforms, or if the requested drive does not exist, returns an empty String.


PackedStringArray get_files() 🔗

Renvoie un PackedStringArray contenant des noms de fichiers du contenu du répertoire, à l'exception des dossiers. Le tableau est trié par ordre alphabétique.

Affectée par include_hidden.

Note : Lorsqu'utilisée sur un chemin res:// dans un projet exporté, seuls les fichiers effectivement inclus dans le PCK au niveau du dossier donné sont renvoyés. En pratique, cela signifie que, puisque les ressources importées sont stockées dans un dossier .godot/ racine, seuls les chemins vers des fichiers *.gd et *.import sont renvoyés (plus quelques fichiers tels que project.godot ou project.binary et l'icône du projet). Dans un projet exporté, la liste des fichiers renvoyés varie aussi selon si ProjectSettings.editor/export/convert_text_resources_to_binary vaut true.


PackedStringArray get_files_at(path: String) static 🔗

Renvoie un PackedStringArray contenant des noms de fichiers du contenu du répertoire, à l'exception des dossiers, au chemin path donné. Le tableau est trié par ordre alphabétique.

Utilisé get_files() si vous voulez plus de contrôle sur ce qui est inclus.

Note : Lorsqu'utilisée sur un chemin res:// dans un projet exporté, seuls les fichiers effectivement inclus dans le PCK au niveau du dossier donné sont renvoyés. En pratique, cela signifie que, puisque les ressources importées sont stockées dans un dossier .godot/ racine, seuls les chemins vers des fichiers *.gd et *.import sont renvoyés (plus quelques fichiers tels que project.godot ou project.binary et l'icône du projet). Dans un projet exporté, la liste des fichiers renvoyés varie aussi selon ProjectSettings.editor/export/convert_text_resources_to_binary.


String get_filesystem_type() const 🔗

Renvoie le nom du système de fichiers du disque du répertoire courant. Les valeurs renvoyées sont des chaînes en majuscules comme NTFS, FAT32, EXFAT, APFS, EXT4, BTRFS etc...

Note : Cette méthode est implémentée sur MacOS, Linux, Windows et le système de fichiers PCK virtuels.


String get_next() 🔗

Retourne l'élément suivant (un fichier ou un dossier) dans le dossier actuel.

Le nom du fichier ou du dossier est renvoyé (et non pas son chemin complet). Une fois que le flux a été entièrement traité, la méthode renvoie une String vide et ferme automatiquement le flux (dans ce cas, l'appel à list_dir_end() n'était pas obligatoire).


Error get_open_error() static 🔗

Renvoie le résultat du dernier appel à open() sur le thread courant.


int get_space_left() 🔗

Renvoie l'espace disponible sur le disque du dossier actuel, en bytes. Renvoie 0 si la méthode spécifique à la plateforme pour demander l'espace disponible échoue.


bool is_bundle(path: String) const 🔗

Renvoie true si la dossier est un bundle macOS.

Note : Cette méthode n'est implémentée que sur macOS.


bool is_case_sensitive(path: String) const 🔗

Renvoie true si le système de fichiers ou répertoire utilisent des noms de fichiers sensibles à la casse.

Note : Cette méthode est implémentée sur macOS, Linux (pour les systèmes de fichiers EXT4 et F2FS seulement) et Windows. Sur d'autres plateformes, elle renvoie toujours true.


bool is_equivalent(path_a: String, path_b: String) const 🔗

Renvoie true si les chemins path_a et path_b se résolvent en le même objet du système de fichiers. Renvoie false sinon, même si les fichiers sont identiques à bit par bit (par exemple, des copies identiques du fichier qui ne sont pas des liens symboliques).


Returns true if the file or directory is a symbolic link, directory junction, or other reparse point.

Note: This method is implemented on macOS, Linux, and Windows.


Error list_dir_begin() 🔗

Initialise le flux utilisé pour lister tous les fichiers et dossiers avec la fonction get_next(), fermant le flux actuellement ouvert si nécessaire. Une fois le flux traité, il devrait généralement être fermé avec list_dir_end().

Affecté par include_hidden et include_navigational.

Note : L'ordre des fichiers et des répertoires renvoyés par cette méthode n'est pas déterministe, et peut varier entre les systèmes d'exploitation. Si vous voulez une liste de tous les fichiers ou dossiers triés par ordre alphabétique, utilisez get_files() ou get_directories().


void list_dir_end() 🔗

Ferme le flux ouvert actuel avec list_dir_begin() (qu'il ait été entièrement traité avec get_next() n'a pas d'importance).


Error make_dir(path: String) 🔗

Crée un dossier. L'argument peut être relatif au dossier actuel, ou un chemin absolu. Le dossier cible doit être placé dans un dossier déjà existant (pour créer le chemin complet de manière récursive, voir make_dir_recursive()).

Renvoie une des constantes de code Error (@GlobalScope.OK en cas de succès).


Error make_dir_absolute(path: String) static 🔗

Version statique de make_dir(). Supporte seulement les chemins absolus.


Error make_dir_recursive(path: String) 🔗

Crée un dossier cible et ainsi que tous les dossiers intermédiaires nécessaires sur le chemin, en appelant make_dir() de façon récursive. L'argument peut être un chemin relatif au dossier actuel, ou un chemin absolu.

Renvoie une des constantes de code Error (@GlobalScope.OK en cas de succès).


Error make_dir_recursive_absolute(path: String) static 🔗

Version statique de make_dir_recursive(). Supporte seulement les chemins absolus.


DirAccess open(path: String) static 🔗

Crée un nouvel objet DirAccess et ouvre un dossier existant dans le système de fichiers. Le chemin path peut être dans l'arborescence du projet (res://dossier), dans le dossier utilisateur (user://dossier) ou un chemin absolu dans le système de fichiers de l'utilisateur (par ex. /tmp/dossier ou C:\tmp\dossier).

Renvoie null si l'ouverture du dossier a échoué. Vous pouvez utiliser get_open_error() pour vérifier l'erreur qui s'est produite.


Renvoie la cible du lien symbolique.

Note : Cette méthode est implémentée sur macOS, Linux et Windows.


Error remove(path: String) 🔗

Supprime définitivement le fichier cible ou un répertoire vide. L'argument peut être relatif au dossier actuel, ou un chemin absolu. Si le répertoire cible n'est pas vide, l'opération échouera.

Si vous ne voulez pas supprimer définitivement le fichier ou le dossier, utilisez plutôt OS.move_to_trash().

Renvoie une des constantes de code Error (@GlobalScope.OK en cas de succès).


Error remove_absolute(path: String) static 🔗

Version statique de remove(). Supporte seulement les chemins absolus.


Error rename(from: String, to: String) 🔗

Renomme (déplace) le fichier ou le dossier from vers la destination to. Les deux arguments devraient être des chemins vers des fichiers ou des dossiers, soit relatifs soit absolus. Si le fichier ou le dossier de destination existe et que son accès n'est pas protégé, il sera écrasé.

Renvoie une des constantes de code Error (@GlobalScope.OK en cas de succès).


Error rename_absolute(from: String, to: String) static 🔗

Version statique de rename(). Supporte seulement les chemins absolus.