Arbeta med kataloger

Adobe AIR 1.0 och senare

I körningsversionen finns funktioner som gör att du kan arbeta med kataloger i det lokala filsystemet.

Mer information om hur du skapar File-objekt som pekar mot kataloger finns i Peka ett File-objekt mot en katalog .

Skapa kataloger

Med metoden File.createDirectory() kan du skapa en katalog. Följande kod skapar en katalog med namnet AIR Test som är en underkatalog till användarens hemkatalog:

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

Om katalogen finns utför metoden createDirectory() ingenting.

I vissa lägen skapar ett FileStream-objekt också kataloger när filer öppnas. Kataloger som saknas skapas när du instansierar en FileStream-instans med parametern fileMode för FileStream() -konstruktorn inställd på FileMode.APPEND eller FileMode.WRITE . Mer information finns i Arbetsflöde för att läsa och skriva filer .

Skapa en tillfällig katalog

Klassen File omfattar en createTempDirectory() -metod, som skapar en katalog i den tillfälliga katalogmappen för systemet, som i följande exempel:

var temp:File = File.createTempDirectory(); 

Metoden createTempDirectory() skapar automatiskt en unik tillfällig katalog (så att du inte behöver fastställa en ny unik plats).

Du kan använda en tillfällig katalog om du tillfälligt behöver lagra filer som används i en programsession. Observera att det finns en createTempFile() -metod för att skapa nya, unika tillfälliga filer i den tillfälliga systemkatalogen.

Du kanske vill ta bort den tillfälliga katalogen innan programmet avslutas, eftersom den inte tas bort automatiskt på alla enheter.

Gå igenom kataloger

Med metoden getDirectoryListing() eller metoden getDirectoryListingAsync() för ett File-objekt kan du hämta en array med File-objekt som pekar mot filer och underkataloger i en katalog.

Följande kod visar innehållet i användarens dokumentkatalog (utan att undersöka underkatalogerna):

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

När du använder den asynkrona versionen av metoden har directoryListing -händelseobjektet en files -egenskap som utgör arrayen med File-objekt som gäller för kataloger:

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

Kopiera och flytta kataloger

Du kan kopiera eller flytta en katalog, med samma metoder som när du kopierar eller flyttar en fil. Följande kod kopierar en katalog synkront:

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

När du anger true för parametern overwrite för metoden copyTo() tas alla filer och mappar i en befintlig målkatalog bort och ersätts med filerna och mapparna i källkatalogen (även om målfilen inte finns i källkatalogen).

Den katalog som du anger för parametern newLocation för metoden copyTo() anger sökvägen till den resulterande katalogen. Den anger inte den överordnade katalog som kommer att innehålla den resulterande katalogen.

Mer information finns i Kopiera och flytta filer .

Ta bort innehåll i kataloger

Klassen File omfattar en deleteDirectory() -metod och en deleteDirectoryAsync() -metod. Dessa metoder tar bort kataloger; den första fungerar synkront medan den andra fungerar asynkront (se Grunderna för AIR-filer ). Båda metoderna har en deleteDirectoryContents -parameter (som använder ett booleskt värde). När den här parametern ställs in på true (standardvärdet är false ) tar anropet till metoden bort alla kataloger som inte är tomma. Annars tas bara tomma kataloger bort.

Följande kod tar synkront bort underkatalogen AIR Test i användarens dokumentkatalog:

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

Följande kod tar asynkront bort underkatalogen AIR Test i användarens dokumentkatalog:

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

Metoderna moveToTrash() och moveToTrashAsync() ingår också, som du använder när du vill flytta en katalog till systemets papperskorg. Mer information finns i Flytta en fil till papperskorgen .