Operazioni con le directory

Adobe AIR 1.0 e versioni successive

Il runtime fornisce le funzionalità per operare con le directory del file system locale.

Per informazioni dettagliate sulla creazione di oggetti File che puntano a directory, consultate Puntamento di un oggetto File a una directory.

Creazione di directory

Il metodo File.createDirectory() consente di creare una directory. Ad esempio, il codice seguente crea una directory denominata AIR Test quale sottodirectory della home directory dell'utente:

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

Se la directory è presente, il metodo createDirectory() non esegue alcuna operazione.

Inoltre, in alcune modalità, un oggetto FileStream crea directory quando si aprono i file. Le directory mancanti vengono create quando si crea un'istanza FileStream con il parametro fileMode delle funzioni di costruzione FileStream() impostata su FileMode.APPEND oppure FileMode.WRITE. Per ulteriori informazioni, consultate Flusso di lavoro per lettura e scrittura di file.

Creazione di una directory temporanea

La classe File comprende un metodo createTempDirectory(), che crea una directory nella cartella della directory temporanea del sistema, come nell'esempio seguente:

var temp:File = File.createTempDirectory(); 

Il metodo createTempDirectory() crea automaticamente una directory temporanea univoca (evitando l'operazione di individuare un nuovo percorso univoco).

Potete utilizzare una directory temporanea per memorizzare momentaneamente i file temporanei utilizzati per una sessione dell'applicazione. Notate che è disponibile il metodo createTempFile() per la creazione di nuovi file temporanei univoci nella directory temporanea di sistema.

Potrebbe essere opportuno eliminare la directory temporanea prima della chiusura dell'applicazione, poiché non viene eliminata automaticamente su tutti i dispositivi.

Enumerazione delle directory

Potete utilizzare il metodo getDirectoryListing() oppure il metodo getDirectoryListingAsync() di un oggetto File per recuperare un array di oggetti File che puntano a file e sottocartelle di una directory.

Ad esempio, il codice seguente elenca il contenuto della directory documents dell'utente (senza esaminare le sottodirectory):

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

Quando si utilizza la versione asincrona del metodo, l'oggetto evento directoryListing presenta una proprietà files che è l'array di oggetti File relativi alle directory:

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

Copiatura e spostamento di directory

Potete copiare o spostare una directory con gli stessi metodi utilizzati per copiare o spostare un file. Ad esempio, il codice seguente copia una directory in modo sincrono:

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

Quando specificate il valore true per il parametro overwrite del metodo copyTo(), tutti i file e le cartelle presenti in una directory di destinazione esistente vengono eliminati e sostituiti con i file e le cartelle della cartella originale (anche se il file di destinazione non è presente in tale directory).

La directory specificata come parametro newLocation del metodo copyTo() indica il percorso della directory risultante; non indica la directory principale che conterrà la directory risultante.

Per informazioni dettagliate, consultate Copiatura e spostamento di file.

Eliminazione del contenuto di una directory

La classe File contiene il metodo deleteDirectory() e il metodo deleteDirectoryAsync(). Questi metodi consentono di eliminare le directory; il primo funziona in modo sincrono, il secondo in modo asincrono (consultate Elementi di base dei file AIR). Entrambi i metodi comprendono un parametro deleteDirectoryContents (che accetta un valore booleano); quando è impostato su true (il valore predefinito è false), la chiamata al metodo elimina le directory non vuote, in caso contrario vengono eliminate solo quelle vuote.

Ad esempio, il codice seguente elimina in modo sincrono la sottodirectory AIR Test della directory documents dell'utente:

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

Il codice seguente elimina in modo asincrono la sottodirectory AIR Test della directory documents dell'utente:

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

Sono disponibili inoltre i metodi moveToTrash() e moveToTrashAsync(), che consentono di spostare una directory nel cestino del sistema. Per informazioni dettagliate, consultate Spostamento di un file nel cestino.