Werken met mappen

Adobe AIR 1.0 of hoger

De runtime biedt u mogelijkheden om te werken met mappen in het lokale bestandssysteem.

Zie File-objecten een map laten aanwijzen voor meer informatie over het maken van File-objecten die mappen aanwijzen.

Mappen maken

Met de methode File.createDirectory() kunt u een map maken. Met de volgende code maakt u bijvoorbeeld een map met de naam AIR Test die een submap is van de homemap van de gebruiker:

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

Als die map al bestaat, doet de methode createDirectory() verder niets.

In bepaalde modi maakt een FileStream-object mappen wanneer bestanden worden geopend. Ontbrekende mappen worden gemaakt wanneer u een FileStream-instantie instantieert met de parameter fileMode van de FileStream() -constructor ingesteld op FileMode.APPEND of FileMode.WRITE . Zie Workflow voor het lezen van en schrijven naar bestanden voor meer informatie.

Tijdelijke mappen maken

De klasse File bevat de methode createTempDirectory() , die een map maakt in de Temp-map van het systeem, zoals in het volgende voorbeeld:

var temp:File = File.createTempDirectory(); 

De methode createTempDirectory() maakt automatisch een unieke tijdelijke map (zodat u niet zelf een nieuwe unieke locatie hoeft te bepalen).

U kunt een tijdelijke map gebruiken om voorlopig tijdelijke bestanden op te slaan die worden gebruikt voor een sessie van de toepassing. Er is ook de methode createTempFile() voor het maken van nieuwe unieke tijdelijke bestanden in de Temp-map van het systeem.

U kunt desgewenst de tijdelijke map verwijderen voordat de toepassing wordt gesloten, aangezien deze map niet automatisch wordt verwijderd op alle apparaten.

Opsommingen maken van mappen

U kunt de methode getDirectoryListing() of getDirectoryListingAsync() van een File-object gebruiken om een array op te halen van File-objecten die bestanden en submappen aanwijzen in een map.

De volgende code geeft bijvoorbeeld een lijst weer van de inhoud van de documentenmap van de gebruiker (zonder submappen te doorzoeken):

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

Als u de asynchrone versie van de methode gebruikt, heeft het gebeurtenisobject directoryListing de eigenschap files , die bestaat uit de array van File-objecten die betrekking hebben op de mappen:

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

Mappen kopiëren en verplaatsen

U kunt een map kopiëren of verplaatsen met behulp van dezelfde methoden die u gebruikt om een bestand te kopiëren of te verplaatsen. Met de volgende code kopieert u bijvoorbeeld een map synchroon:

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

Wanneer u "true" opgeeft voor de parameter overwrite van de methode copyTo() , worden alle bestanden en mappen in een bestaande doelmap verwijderd en vervangen door de bestanden en mappen uit de bronmap (zelfs als het doelbestand niet bestaat in de bronmap).

De map die u opgeeft bij de parameter newLocation van de methode copyTo() , definieert het pad naar de resulterende map. Deze parameter definieert niet de bovenliggende map die de resulterende map zal bevatten.

Zie Bestanden kopiëren en verplaatsen voor meer informatie.

De inhoud van mappen verwijderen

De klasse File bevat de methoden deleteDirectory() en deleteDirectoryAsync() . Deze methoden verwijderen mappen, de eerste op synchrone wijze, de tweede op asynchrone wijze (zie Basisinformatie over AIR-bestanden ). Beide methoden bevatten de parameter deleteDirectoryContents (die een Booleaanse waarde heeft). Wanneer deze parameter wordt ingesteld op true (de standaardwaarde is false ), verwijdert de oproep van deze methode mappen die niet leeg zijn. Bij gebruik van de standaardwaarde worden alleen lege mappen verwijderd.

De volgende code verwijdert bijvoorbeeld synchroon de submap AIR Test van de documentenmap van de gebruiker:

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

De volgende code verwijdert asynchroon de submap AIR Test van de documentenmap van de gebruiker:

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

Ook beschikbaar zijn de methoden moveToTrash() en moveToTrashAsync() , die u kunt gebruiken om een map te verplaatsen naar de systeemprullenbak. Zie Bestanden verplaatsen naar de prullenbak voor meer informatie.