Arbeiten mit Verzeichnissen

Adobe AIR 1.0 und höher

Die Laufzeitumgebung stellt Ihnen Möglichkeiten bereit, um mit Verzeichnissen auf dem lokalen Dateisystem zu arbeiten.

Erläuterungen zum Erstellen von File-Objekten, die auf Verzeichnisse verweisen, finden Sie unter Verweisen vom File-Objekt auf ein Verzeichnis .

Erstellen von Verzeichnissen

Mithilfe der Methode File.createDirectory() können Sie ein Verzeichnis erstellen. Im folgenden Code beispielsweise wird ein Verzeichnis mit dem Namen „AIR Test“ als Unterverzeichnis des Stammverzeichnisses eines Benutzers erstellt:

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

Ist das Verzeichnis bereits vorhanden, hat die Methode createDirectory() keine Auswirkung.

In einigen Modi erstellt ein FileStream-Objekt beim Öffnen von Dateien ein Verzeichnis. Fehlende Verzeichnisse werden erstellt, wenn Sie eine FileStream-Instanz instantiieren und dabei den Parameter fileMode des FileStream() -Konstruktors auf FileMode.APPEND oder FileMode.WRITE setzen. Weitere Informationen finden Sie unter Workflow zu Lese- und Schreibvorgängen in Dateien .

Erstellen eines temporären Verzeichnisses

Die File-Klasse beinhaltet die Methode createTempDirectory() , die im Systemordner für temporäre Dateien ein Verzeichnis anlegt. Hier ein Beispiel:

var temp:File = File.createTempDirectory(); 

Die Methode createTempDirectory() erstellt automatisch ein eindeutiges temporäres Verzeichnis (sodass Sie nicht selbst einen eindeutigen Pfad ermitteln müssen).

In einem temporären Verzeichnis können Sie Dateien vorübergehend speichern, die nur während der aktuellen Anwendungssitzung benötigt werden. Beachten Sie, dass es eine neue createTempFile() -Methode gibt, um im Systemordner für temporäre Dateien neue, eindeutige Dateien zu erstellen.

Da das temporäre Verzeichnis nicht auf allen Geräten automatisch gelöscht wird, sollten Sie es evtl. löschen, bevor die Anwendung geschlossen wird.

Erstellen von Verzeichnislisten

Mithilfe der Methoden getDirectoryListing() und getDirectoryListingAsync() eines File-Objekts können Sie einen Array mit File-Objekten abrufen, die auf Dateien und Unterverzeichnisse in einem bestimmten Verzeichnis zeigen.

Im folgenden Beispielcode wird der Inhalt des Benutzerdokumentverzeichnisses aufgelistet (ohne Untersuchung der Unterverzeichnisse):

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

Wenn Sie die asynchrone Version der Methode verwenden, besitzt das Ereignisobjekt directoryListing eine files -Eigenschaft, welche ein Array an File-Objekten, die zum betreffenden Verzeichnis gehören, darstellt:

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

Kopieren und Verschieben von Verzeichnissen

Sie können ein Verzeichnis mit denselben Methode kopieren oder verschieben, die Sie auch zum Kopieren und Verschieben von Dateien verwenden. Im folgenden Beispielcode wird ein Verzeichnis synchron kopiert:

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

Wenn Sie für den Parameter overwrite der Methode copyTo() den Wert „true“ angeben, werden alle Dateien und Ordner in einem vorhandenen Zielverzeichnis durch die Dateien und Ordner im Quellverzeichnis ersetzt (auch wenn die Zieldatei im Quellverzeichnis nicht existiert).

Das Verzeichnis, das Sie im Parameter newLocation der Methode copyTo() angeben, bestimmt den Pfad zum Ergebnisverzeichnis, aber nicht das übergeordnete Verzeichnis, in dem das Ergebnisverzeichnis enthalten sein wird.

Weitere Informationen finden Sie unter Kopieren und Verschieben von Dateien .

Löschen des Verzeichnisinhalts

Die File-Klasse umfasst eine deleteDirectory() - und eine deleteDirectoryAsync() -Methode. Beide Methoden löschen Verzeichnisse, wobei die erste synchron arbeitet und die zweite asynchron (siehe auch Grundlegende Dateioperationen ). Auch besitzen beide den booleschen Parameter deleteDirectoryContents . Ist dieser auf true gesetzt, löscht der Methodenaufruf nicht-leere Verzeichnisse. Ist er auf false gesetzt (der Standardwert), werden nur leere Verzeichnisse gelöscht.

Im folgenden Code beispielsweise wird das Unterverzeichnis „AIR Test“ synchron aus dem Dokumentenverzeichnis des Benutzers gelöscht:

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

Im folgenden Code wird das Unterverzeichnis „AIR Test“ asynchron aus dem Dokumentenverzeichnis des Benutzers gelöscht:

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

Die Klasse umfasst zudem die Methoden moveToTrash() und moveToTrashAsync() , mit denen Sie ein Verzeichnis in den Papierkorb des Systems verschieben können. Weitere Informationen finden Sie unter Verschieben einer Datei in den Papierkorb .