Utilisation de répertoires

Adobe AIR 1.0 et les versions ultérieures

Le moteur d’exécution vous permet de manipuler les répertoires du système de fichiers local.

Pour plus de détails sur la création d’objets File qui pointent vers des répertoires, voir la section Pointage d’un objet File vers un répertoire .

Création de répertoires

La méthode File.createDirectory() permet de créer un répertoire. Par exemple, le code suivant crée le répertoire AIR Test en tant que sous-répertoire du répertoire d’accueil de l’utilisateur :

var dir:File = File.userDirectory.resolvePath("AIR Test"); 
dir.createDirectory(); 

Si le répertoire existe, la méthode createDirectory() n’agit pas.

Par ailleurs, dans certains modes, un objet FileStream crée des répertoires à l’ouverture des fichiers. Les répertoires qui n’existent pas sont créés lorsque vous instanciez une occurrence de FileStream en définissant le paramètre fileMode du constructeur FileStream() sur FileMode.APPEND ou FileMode.WRITE . Pour plus d’informations, voir la section Flux de travail pour la lecture et l’écriture de fichiers .

Création d’un répertoire temporaire

La classe File comprend la méthode createTempDirectory() , qui crée un répertoire dans le répertoire temporaire système, comme l’illustre l’exemple suivant :

var temp:File = File.createTempDirectory(); 

La méthode createTempDirectory() crée automatiquement un répertoire temporaire unique (ce qui vous évite d’avoir à déterminer un nouvel emplacement unique).

Vous pouvez utiliser un répertoire temporaire pour stocker provisoirement des fichiers temporaires utilisés au cours d’une session de l’application. Vous remarquerez que la méthode createTempFile() permet de créer des fichiers temporaires uniques dans le répertoire temporaire système.

Vous pouvez éventuellement supprimer le répertoire temporaire avant de fermer l’application, car cette opération n’est pas automatiquement effectuée sur tous les périphériques.

Enumération de répertoires

Les méthodes getDirectoryListing() ou getDirectoryListingAsync() d’un objet File permettent d’obtenir un tableau d’objets File pointant vers les fichiers et sous-répertoires d’un répertoire.

Par exemple, le code suivant répertorie le contenu du répertoire de documents de l’utilisateur (sans examiner les sous-répertoires) :

var directory:File = File.documentsDirectory; 
var contents:Array = directory.getDirectoryListing();  
for (var i:uint = 0; i < contents.length; i++)  
{ 
    trace(contents[i].name, contents[i].size);  
} 

Lorsque vous utilisez la version asynchrone de la méthode, l’objet événement directoryListing possède la propriété files , qui consiste en un tableau d’objets File appartenant aux répertoires :

var directory:File = File.documentsDirectory; 
directory.getDirectoryListingAsync(); 
directory.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler); 
 
function dirListHandler(event:FileListEvent):void 
{ 
    var contents:Array = event.files; 
    for (var i:uint = 0; i < contents.length; i++)  
    { 
        trace(contents[i].name, contents[i].size);  
    } 
} 

Copie et déplacement de répertoires

Vous pouvez copier ou déplacer un répertoire, en utilisant les mêmes méthodes que pour un fichier. Par exemple, le code suivant copie un répertoire en mode synchrone :

var sourceDir:File = File.documentsDirectory.resolvePath("AIR Test"); 
var resultDir:File = File.documentsDirectory.resolvePath("AIR Test Copy"); 
sourceDir.copyTo(resultDir); 

Lorsque vous définissez le paramètre overwrite de la méthode copyTo() sur true, tous les fichiers et dossiers d’un répertoire cible existant sont supprimés et remplacés par les fichiers et dossiers du répertoire source (même si le fichier cible n’existe pas dans le répertoire source).

Le répertoire sur lequel vous définissez le paramètre newLocation de la méthode copyTo() spécifie le chemin d’accès au répertoire résultant, et non le répertoire parent qui contiendra le répertoire résultant.

Pour plus d’informations, voir la section Copie et déplacement de fichiers .

Suppression du contenu d’un répertoire

La classe File comprend les méthodes deleteDirectory() et deleteDirectoryAsync() . Ces méthodes suppriment des répertoires. La première s’exécute en mode synchrone et la seconde en mode asynchrone (voir la section Principes de base des classes File d’AIR ). Elles comprennent toutes deux le paramètre deleteDirectoryContents (qui accepte une valeur booléenne). Lorsque ce paramètre est défini sur true (la valeur par défaut correspond à false ), l’appel de la méthode supprime les répertoires non vides ; sinon, seuls les répertoires vides sont supprimés.

Par exemple, le code suivant supprime en mode synchrone le sous-répertoire AIR Test du répertoire de documents de l’utilisateur :

var directory:File = File.documentsDirectory.resolvePath("AIR Test"); 
directory.deleteDirectory(true); 

Le code suivant supprime en mode asynchrone le sous-répertoire AIR Test du répertoire de documents de l’utilisateur :

var directory:File = File.documentsDirectory.resolvePath("AIR Test"); 
directory.addEventListener(Event.COMPLETE, completeHandler) 
directory.deleteDirectoryAsync(true); 
 
function completeHandler(event:Event):void { 
    trace("Deleted.") 
} 

Vous disposez également des méthodes moveToTrash() et moveToTrashAsync() , qui permettent de déplacer un répertoire vers la corbeille système. Pour plus d’informations, voir la section Déplacement d’un fichier vers la corbeille .