Trabajo con archivos

Adobe AIR 1.0 y posterior

La API de archivos de AIR permite añadir capacidades básicas de interacción de archivos a las aplicaciones. Por ejemplo, se pueden leer y escribir archivos, copiar y eliminar archivos, etc. Dado que las aplicaciones tienen acceso al sistema de archivos local, consulte Seguridad en AIR si aún no lo ha hecho.

Nota: se puede asociar un tipo de archivo con una aplicación de AIR (de modo que, al hacerle doble clic, se abra la aplicación). Para obtener más información, consulte Gestión de asociaciones con archivos .

Obtención de información sobre los archivos

La clase File incluye las siguientes propiedades que brindan información sobre un archivo o directorio al que apunta un objeto File:

Propiedad File

Descripción

creationDate

La fecha de creación del archivo en el disco local.

creator

Obsoleto: utilice la propiedad extension . (Esta propiedad notifica el tipo de creador Macintosh del archivo, que solo se utiliza en las versiones de Mac OS anteriores a Mac OS X).

downloaded

(AIR 2 y posterior) Indica si el archivo o directorio al que se hace referencia se ha descargado (de Internet) o no. La propiedad solo es significativa en sistemas operativos en los que se pueden identificar archivos descargados:

  • Windows XP Service Pack 2 y posterior, y en Windows Vista

  • Mac OS 10.5 y versiones posteriores

exists

Si existe o no el archivo o directorio al que se remite.

extension

La extensión del archivo, que es la parte del nombre después del punto final ("."), sin incluir este. Si el nombre de archivo no contiene un punto, la extensión es null .

icono

Un objeto Icon que contiene los iconos definidos para el archivo.

isDirectory

Si el objeto File remite o no a un directorio.

modificationDate

La fecha de la última modificación del archivo o directorio del disco local.

name

El nombre del archivo o directorio (incluida la extensión, si la hay) en el disco duro,

nativePath

El trayecto completo en la representación del sistema operativo del ordenador host. Consulte Rutas a objetos File .

parent

La carpeta que contiene la carpeta o el archivo que representa el objeto File. Esta propiedad es null si el objeto File remite a un archivo o directorio que se encuentra en la raíz del sistema de archivos.

size

El tamaño del archivo en el disco local, expresado en bytes.

type

Obsoleto: utilice la propiedad extension . (En un ordenador Macintosh esta propiedad es el tipo de archivo de cuatro caracteres, que solo se utiliza en las versiones de Mac OS anteriores a Mac OS X).

url

La URL del archivo o directorio. Consulte Rutas a objetos File .

Para obtener más información sobre estas propiedades, consulte la entrada de la clase File en Referencia de ActionScript 3.0 para la plataforma de Adobe Flash .

Copia y movimiento de directorios

La clase File incluye dos métodos de copiar archivos o directorios: copyTo() y copyToAsync() . La clase File incluye dos métodos de mover archivos o directorios: moveTo() y moveToAsync() . Los métodos copyTo() y moveTo() funcionan de modo sincrónico y los métodos copyToAsync() y moveToAsync() son asíncronos (consulte Aspectos básicos de los archivos de AIR ).

Para copiar o mover un archivo se configuran dos objetos File. Uno de ellos apunta al archivo a copiar o mover y es el objeto que llama al método de copiar o mover, mientras que el otro apunta a la ruta de destino (el resultado).

Lo que sigue copia un archivo test.txt desde el subdirectorio AIR Test del directorio de documentos del usuario en un archivo llamado copy.txt en el mismo directorio:

var original:File = File.documentsDirectory.resolvePath("AIR Test/test.txt"); 
var newFile:File = File.resolvePath("AIR Test/copy.txt"); 
original.copyTo(newFile, true); 

En este ejemplo el valor del parámetro overwrite del método copyTo() (el segundo parámetro) está definido en true . Al definir overwrite como true , si el archivo de destino ya existe se sobrescribe. Este parámetro es opcional. Si está definido en false (el valor predeterminado), la operación distribuye un evento IOErrorEvent en el caso de que el archivo de destino ya exista (el archivo no se copia).

Las versiones “Async” de los métodos de copiar y mover funcionan de modo asíncrono. Utilice el método addEventListener() para controlar si se concluye la tarea o se produce un estado de error, como en el código siguiente:

var original = File.documentsDirectory; 
original = original.resolvePath("AIR Test/test.txt"); 
 
var destination:File = File.documentsDirectory; 
destination =  destination.resolvePath("AIR Test 2/copy.txt"); 
 
original.addEventListener(Event.COMPLETE, fileMoveCompleteHandler); 
original.addEventListener(IOErrorEvent.IO_ERROR, fileMoveIOErrorEventHandler); 
original.moveToAsync(destination); 
 
function fileMoveCompleteHandler(event:Event):void { 
    trace(event.target); // [object File] 
} 
function fileMoveIOErrorEventHandler(event:IOErrorEvent):void { 
    trace("I/O Error.");  
} 

La clase File también incluye los métodos File.moveToTrash() y File.moveToTrashAsync() , que sirven para trasladar un archivo o directorio a la papelera del sistema.

Eliminación de archivos

La clase File incluye un método deleteFile() y un método deleteFileAsync() . Estos métodos eliminan archivos, el primero de forma sincrónica y el segundo de forma asíncrona (consulte Aspectos básicos de los archivos de AIR ).

En el ejemplo siguiente, el código elimina de modo sincrónico el archivo test.txt del directorio de documentos del usuario:

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.deleteFile(); 

El código siguiente elimina de modo asíncrono el archivo test.txt del directorio de documentos del usuario:

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.addEventListener(Event.COMPLETE, completeHandler) 
file.deleteFileAsync(); 
 
function completeHandler(event:Event):void { 
    trace("Deleted.") 
} 

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

Traslado de archivos a la papelera

La clase File incluye un método moveToTrash() y un método moveToTrashAsync() . Estos métodos envían un archivo o directorio a la papelera del sistema, el primero de forma sincrónica y el segundo de forma asíncrona (consulte Aspectos básicos de los archivos de AIR ).

En el ejemplo siguiente, el código traslada de modo sincrónico el archivo test.txt del directorio de documentos del usuario a la papelera del sistema:

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.moveToTrash(); 
Nota: en sistemas operativos que no admiten el concepto de carpeta de papelera recuperable, los archivos se eliminan inmediatamente.

Creación de archivos temporales

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

var temp:File = File.createTempFile(); 

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

Se puede utilizar un archivo temporal para guardar de forma provisional la información que se utiliza en una sesión de la aplicación. Obsérvese que existe además un método createTempDirectory() para crear nuevos directorios temporales exclusivos en el directorio temporal System.

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