Trabajo con directorios

Adobe AIR 1.0 y posterior

El motor de ejecución ofrece funciones para trabajar con directorios en el sistema de archivos local.

Para obtener más información sobre la creación de objetos File que apuntan a directorios, consulte Configuración de un objeto File para que apunte a un directorio .

Creación de directorios

El método File.createDirectory() sirve para crear un directorio. En el ejemplo siguiente, el código crea un directorio llamado "AIR Test" como subdirectorio del directorio de inicio del usuario:

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

Si el directorio ya existe, el método createDirectory() no hace nada.

Además, en algunos modos un objeto FileStream crea un directorio cuando se abre un archivo. Se crean directorios inexistentes cuando se concreta una instancia de FileStream con el parámetro fileMode del constructor FileStream() definido en FileMode.APPEND o FileMode.WRITE . Para ver más información, consulte Flujo de trabajo de lectura y escritura de archivos .

Creación de directorios temporales

La clase File incluye un método createTempDirectory() que crea un directorio en la carpeta de directorios temporales para el sistema, como en el ejemplo siguiente:

var temp:File = File.createTempDirectory(); 

El método createTempDirectory() crea automáticamente un directorio temporal exclusivo (ahorrándole el trabajo de determinar un nuevo lugar exclusivo).

Se puede utilizar un directorio temporal para guardar de forma provisional los archivos temporales que se utilizan para una sesión de la aplicación. Cabe observar que existe un método createTempFile() para crear nuevos archivos temporales exclusivos en el directorio temporal del sistema.

Puede que desee eliminar el directorio temporal antes de cerrar la aplicación, dado que no se elimina de forma automática en todos los dispositivos.

Enumeración de directorios

El método getDirectoryListing() o el método getDirectoryListingAsync() de un objeto File sirve para obtener un conjunto de objetos File que apuntan a archivos y subdirectorios de un directorio.

Por ejemplo, el siguiente código enumera el contenido del directorio de documentos del usuario (sin examinar los subdirectorios):

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);  
} 

Al utilizar la versión asíncrona del método, el objeto de evento directoryListing tiene una propiedad files que es el conjunto de objetos File que corresponden a los directorios:

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);  
    } 
} 

Copia y movimiento de directorios

Los directorios se copian o mueven de la misma forma que los archivos. Por ejemplo, el siguiente código copia un directorio de modo sincrónico:

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

Si se especifica "true" para el parámetro overwrite del método copyTo() , se eliminan todos los archivos y las carpetas de un directorio de destino existente, sustituyéndose por los archivos y carpetas del directorio de origen (aunque el archivo de destino no exista en el directorio de origen).

El directorio que se especifique como parámetro newLocation del método copyTo() especifica la ruta al directorio resultante; no especifica el directorio superior que contendrá el directorio resultante.

Para obtener más información, consulte Copia y movimiento de directorios .

Eliminación del contenido de los directorios

La clase File incluye un método deleteDirectory() y un método deleteDirectoryAsync() . Estos métodos eliminan directorios, el primero de forma sincrónica y el segundo de forma asíncrona (consulte Aspectos básicos de los archivos de AIR ). Ambos métodos incluyen un parámetro deleteDirectoryContents (que tiene un valor booleano); cuando dicho parámetro se define en true (el valor predeterminado es false ), al llamar al método se eliminan los directorios que no estén vacíos; de lo contrario, solo se eliminan los directorios vacíos.

En el ejemplo siguiente, el código elimina de modo sincrónico el subdirectorio AIR Test del directorio de documentos del usuario:

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

El código siguiente elimina de modo asíncrono el subdirectorio AIR Test del directorio de documentos del usuario:

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

También se incluyen los métodos moveToTrash() y moveToTrashAsync() , que sirven para trasladar un directorio a la papelera del sistema. Para obtener más información, consulte Traslado de archivos a la papelera .