Arbeta med File-objekt i AIR

Adobe AIR 1.0 och senare

Ett File-objekt är en pekare till en fil eller en katalog i filsystemet.

Klassen File utökar klassen FileReference. Klassen FileReference, som finns i både Adobe® Flash® Player och AIR, utgör en pekare till en fil, men klassen File lägger till egenskaper och metoder som av säkerhetsskäl inte visas i Flash Player (i en SWF-fil som körs i en webbläsare).

Om klassen File

Du kan använda klassen File för följande:

  • Hämta sökvägen till specialkataloger, bland annat användarkatalogen, användarens dokumentkatalog, katalogen som programmet startades från samt programkatalogen.

  • Kopiera filer och kataloger.

  • Flytta filer och kataloger.

  • Ta bort filer och kataloger (eller flytta dem till papperskorgen)

  • Visa filer och kataloger som finns i en katalog

  • Skapa tillfälliga filer och mappar

När ett File-objekt pekar på en filsökväg, kan du använda den om du vill läsa och skriva fildata, med hjälp av klassen FileStream.

Ett File-objekt kan peka på sökvägen till en fil eller katalog som inte längre finns. Du kan använda sådana File-filobjekt när du skapar en fil eller katalog.

Sökvägar till File-objekt

Varje File-objekt har två egenskaper som definierar sökvägen:

Egenskap

Beskrivning

nativePath

Anger den plattformsspecifika sökvägen till en fil. I Windows kan en sökväg vara ”c:\Sample directory\test.txt” medan den i Mac OS är ”/Sample directory/test.txt”. nativePath-egenskapen använder ett omvänt snedstreck (\) som katalogavgränsare i Windows, och ett vanligt snedstreck (/) i Mac OS och Linux.

url

Denna kan använda filens URL-schema för att peka mot en fil. I Windows kan en sökväg vara ”file:///c:/Sample%20directory/test.txt” medan den i Mac OS är ”file:///Sample%20directory/test.txt”. Körningsversionen omfattar andra särskilda URL-scheman förutom file och dessa beskrivs i URL-scheman som stöds i AIR

Klassen File inkluderar statiska egenskaper som du använder för att peka på standardkataloger i Mac OS, Windows och Linux. Bland dessa egenskaper finns:

  • File.applicationStorageDirectory – en katalog som är unik för varje installerat AIR-program. Den här katalogen är ett bra ställe att lagra dynamiska programresurser och användarinställningar. Stora datamängder bör lagras någon annanstans.

    På Android tas programkatalogen bort när programmet avinstalleras eller när användaren väljer att rensa programdata, men detta gäller inte andra plattformar.

  • File.applicationDirectory – den katalog där programmet installeras (tillsammans med eventuella resurser). På vissa operativsystem lagras programmet i en enda paketfil, i stället för i en fysisk katalog. I så fall kan det hända att innehållet inte är tillgängligt via systemsökvägen. Programkatalogen är skrivskyddad.

  • File.desktopDirectory – användarens skrivbordskatalog. Om plattformen inte definierar någon skrivbordskatalog används en annan plats i filsystemet.

  • File.documentsDirectory – användarens dokumentkatalog. Om plattformen inte definierar någon dokumentkatalog används en annan plats i filsystemet.

  • File.userDirectory – användarkatalogen. Om plattformen inte definierar någon användarkatalog används en annan plats i filsystemet.

Obs! Om plattformen inte definierar några standardplatser för skrivbords-, dokument- eller användarkataloger kan File.documentsDirectory, File.desktopDirectory och File.userDirectory referera till samma katalog.

Dessa egenskaper har olika värden på olika operativsystem. Mac och Windows har till exempel olika systemsökvägar till användarens skrivbordskatalog. Egenskapen File.desktopDirectory pekar däremot på en lämplig katalogsökväg på alla plattformar. Om du vill skriva program som fungerar bra på olika plattformar använder du de här egenskaperna som utgångspunkt för att referera till andra kataloger och filer som används av programmet. Sedan använder du metoden resolvePath() för att närmare specificera sökvägen. Den här koden pekar till exempel på filen preferences.xml i programmets katalog:

var prefsFile:File = File.applicationStorageDirectory; 
prefsFile = prefsFile.resolvePath("preferences.xml");

Även om du kan använda klassen File för att peka på en viss sökväg kan det leda till att programmet inte fungerar på alla plattformar. Sökvägen C:\Documents and Settings\joe\ fungerar till exempel bara på Windows. Därför är det bäst att använda de statiska egenskaperna i klassen File, som File.documentsDirectory.

Vanliga katalogplatser

Plattform

Katalogtyp

Normal filsystemplats

Android

Program

/data/data/

Programlagring

/data/data/air.applicationID/filename/Local Store

Skrivbord

/mnt/sdcard

Dokument

/mnt/sdcard

Tillfällig

/data/data/applicationID/cache/FlashTmp.randomString

Användare

/mnt/sdcard

Linux

Program

/opt/filename/share

Programlagring

/home/userName/.appdata/applicationID/Local Store

Skrivbord

/home/userName/Desktop

Dokument

/home/userName/Documents

Tillfällig

/tmp/FlashTmp.randomString

Användare

/home/userName

Macintosh

Program

/Applications/filename.app/Contents/Resources

Programlagring

/Users/userName/Library/Preferences/applicationID/Local Store

Skrivbord

/Users/userName/Desktop

Dokument

/Users/userName/Documents

Tillfällig

/private/var/folders/JY/randomString/TemporaryItems/FlashTmp

Användare

/Users/userName

Windows

Program

C:\Program Files\filename

Programlagring

C:\Documents and settings\userName\ApplicationData\applicationID\Local Store

Skrivbord

C:\Documents and settings\userName\Desktop

Dokument

C:\Documents and settings\userName\My Documents

Tillfällig

C:\Documents and settings\userName\Local Settings\Temp\randomString.tmp

Användare

C:\Documents and settings\userName

De faktiska systemsökvägarna för dessa kataloger varierar beroende på operativsystem och datorkonfiguration. Sökvägarna i den här tabellen är exempel. Du bör alltid använda lämpliga statiska egenskaper för klassen File för att referera till de här katalogerna så att programmet fungerar som det ska oavsett plattform. I ett riktigt AIR-program hämtas värdena för applicationID och filename (som visas i tabellen) från programbeskrivningsfilen. Om du anger ett utgivar-ID i programbeskrivningsfilen läggs utgivar-ID:t till program-ID:t i dessa sökvägar. Värdet på userName är kontonamnet för den användare som installerar programmet.

Katalogvy för AIR for TV-program

För att skydda systemfilerna på enheter med AIR for TV kan ett AIR-program bara komma åt en begränsad uppsättning kataloger. AIR for TV hindrar programmet från att komma åt några andra kataloger. Dessutom isolerar AIR for TV varje användares egna data för varje AIR-program.

AIR-programmet använder katalognamn som bara är avsedda för ActionScript 3.0-användning. De här namnen representerar inte några verkliga kataloger på enheten. AIR for TV mappar dessa ActionScript 3.0-katalognamn till verkliga kataloger på enheten. Den här mappningen ser till AIR for TV-program inte kommer åt lokala filer som de inte äger, vare sig det är av misstag eller av andra skäl.

ActionScript 3.0-katalognamnen är:

/app/
Den skrivskyddade programkatalogen för det AIR-program som körs.

/app-storage/
Programlagringskatalog med läs- och skrivbehörighet för det AIR-program som körs.

/home/
Användarkatalog med läs- och skrivbehörighet.

/tmp/
Tillfällig katalog med läs- och skrivbehörighet för det AIR-program som körs.

/volumes/
Skrivskyddad katalog med noll eller flera underkataloger med läs- och skrivbehörighet som representerar monterade volymer.

Om ett program försöker få tillgång till en skyddad katalog genereras ett undantagsfel som ActionScript-koden kan hantera.

I följande tabell visas File.nativePath-värdena för olika File-egenskaper och -metoder. Värdena speglar programmets begränsade vy av enhetens filsystem.

File-egenskap eller -metod

File.nativePath-värde

Mappningsinformation

applicationDirectory

/app/

Mappar till en programspecifik katalog.

applicationStorageDirectory

/app-storage/

Mappar till en programspecifik katalog i en användarspecifik katalog.

desktopDirectory

/home/

Mappar till en programspecifik katalog i en användarspecifik katalog. Samma katalog som userDirectory och documentsDirectory.

userDirectory

/home/

Mappar till en programspecifik katalog i en användarspecifik katalog. Samma katalog som desktopDirectory och documentsDirectory.

documentsDirectory

/home/

Mappar till en programspecifik katalog i en användarspecifik katalog. Samma katalog som userDirectory och desktopDirectory.

createTempDirectory()

/tmp/

Mappar till en tillfällig katalog. AIR for TV tar bort den här katalogen och dess innehåll när AIR-programmet avslutas.

Ta även hänsyn till beteendet för följande metoder på enheter med AIR for TV:

  • File.createTempFile() skapar en fil i katalogen /tmp/.

  • File.getRootDirectories() returnerar en array med ett File-objekt. File-objektets nativePath-egenskap har värdet /. Den här rotkatalogen innehåller katalogerna app, app-storage, home och tmp.

  • StorageVolumeInfo.storageVolumeInfo.getStorageVolumes() returnerar en vektor med StorageVolume-objekt. Varje StorageVolume-objekts rootDirectory-egenskap är ett File-objekt. File-objektets nativePath-värde börjar på /volumes/. Alla program och användare har tillgång till katalogen /volumes/.

Peka ett File-objekt mot en katalog

Du kan ställa in ett File-objekt på två sätt så att det pekar mot en katalog.

Peka mot användarens hemkatalog

Du kan peka ett File-objekt mot användarens hemkatalog. Följande kod ställer in ett File-objekt att peka mot en AIR Test-underkatalog till hemkatalogen:

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

Peka mot användarens dokumentkatalog

Du kan peka ett File-objekt mot användarens dokumentkatalog. Följande kod ställer in ett File-objekt att peka mot en AIR Test-underkatalog till dokumentkatalogen:

var file:File = File.documentsDirectory.resolvePath("AIR Test");

Peka mot skrivbordskatalogen

Du kan peka ett File-objekt mot skrivbordet. Följande kod ställer in ett File-objekt att peka mot en AIR Test-underkatalog till skrivbordet:

var file:File = File.desktopDirectory.resolvePath("AIR Test");

Peka mot programlagringskatalogen

Du kan peka ett File-objekt mot programlagringskatalogen. För alla AIR-program finns det en unik associerad sökväg som definierar programlagringskatalogen. Den här katalogen är unik för varje program och användare. Du kan använda den här katalogen för att lagra användarspecifika, programspecifika data (till exempel användardata eller inställningsfiler). Följande kod pekar ett File-objekt mot en inställningsfil, prefs.xml, som finns i programlagringskatalogen:

var file:File = File.applicationStorageDirectory; 
file = file.resolvePath("prefs.xml");

Sökvägen för programlagringskatalogen baseras vanligtvis på användarnamnet och program-ID:t. Följande filsystemplatser visas här för att underlätta felsökning av programmet. Du bör alltid använda egenskapen File.applicationStorage eller URI-schemat app-storage: för att lösa filkonflikter i den här katalogen:

  • I Mac OS:

    /Users/användarnamn/Library/Preferences/program-ID/Local Store/

    Till exempel:

    /Users/babbage/Library/Preferences/com.example.TestApp/Local Store
  • I Windows (i katalogen Documents and Settings):

    C:\Documents and Settings\användarnamn\Application Data\program-ID\Local Store\

    Till exempel:

    C:\Documents and Settings\babbage\Application Data\com.example.TestApp\Local Store
  • I Linux – i:

    /home/användarnamn/.appdata/program-ID/Local Store/

    Till exempel:

    /home/babbage/.appdata/com.example.TestApp/Local Store
  • I Android:

    /data/data/androidPackageID/applicationID/Local Store

    Till exempel:

    /data/data/air.com.example.TestApp/com.example.TestApp/Local Store
  • På enheter med AIR for TV beskrivs platsen i Katalogvy för AIR for TV-program.

Obs! Om ett program har ett utgivar-ID används även detta utgivar-ID som en del av sökvägen till programlagringskatalogen.

URL:en (och egenskapen url) för ett File-objekt som har skapats med File.applicationStorageDirectory använder URL-schemat app-storage (se URL-scheman som stöds i AIR), så här:

var dir:File = File.applicationStorageDirectory; 
dir = dir.resolvePath("preferences"); 
trace(dir.url); // app-storage:/preferences

Peka mot programkatalogen

Du kan peka ett File-objekt mot katalogen där programmet installerades, som också kallas för programkatalogen. Du kan referera till den här katalogen med hjälp av egenskapen File.applicationDirectory. Du kan använda den här katalogen för att undersöka programbeskrivningsfilen eller andra resurser som har installerats med programmet. Följande kod pekar ett File-objekt mot en katalog med namnet images i programkatalogen:

var dir:File = File.applicationDirectory; 
dir = dir.resolvePath("images"); 

URL:en (och egenskapen url) för ett File-objekt som har skapats med File.applicationDirectory använder URL-schemat app (se URL-scheman som stöds i AIR), så här:

var dir:File = File.applicationDirectory; 
dir = dir.resolvePath("images"); 
trace(dir.url); // app:/images
Obs! I Android är filerna i programpaketet inte tillgängliga via nativePath. Egenskapen nativePath är en tom sträng. Använd alltid URL:en för att komma åt filer i programkatalogen i stället för en systemsökväg.

Peka på filsystemets rot

Metoden File.getRootDirectories() visar alla rotvolymer, till exempel C: och monterade volymer på en Windows-dator. I Mac OS och Linux returnerar den här metoden alltid datorns unika rotkatalog (katalogen "/"). Metoden StorageVolumeInfo.getStorageVolumes() ger mer detaljerad information om monterade lagringsvolymer (se Arbeta med lagringsvolymer).

Obs! Filsystemets rot kan inte läsas i Android. Ett File-objekt som refererar till katalogen med systemsökvägen ”/” returneras, men egenskaperna för det objektet har inte korrekta värden. spaceAvailable är till exempel alltid 0.

Peka mot en viss katalog

Du kan peka File-objektet mot en viss katalog genom att ange egenskapen nativePath för File-objektet, som i följande exempel (i Windows):

var file:File = new File(); 
file.nativePath = "C:\\AIR Test";

Viktigt! Om du pekar på en explicit sökväg på det här sättet kan det innebära att koden inte fungerar på alla plattformar. Det föregående exemplet fungerar till exempel bara på Windows. Du kan använda de statiska egenskaperna i File-objektet, som File.applicationStorageDirectory, för att leta upp en katalog som fungerar på alla plattformar. Använd sedan metoden resolvePath() (se nästa avsnitt) för att navigera till en relativ sökväg.

Navigera till relativa sökvägar

Med metoden resolvePath() kan du hämta en sökväg som är relativ till en annan angiven sökväg. Följande kod ställer in ett File-objekt att peka mot underkatalogen ”AIR Test” till användarens hemkatalog:

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

Du kan också använda egenskapen url för ett File-objekt om du vill peka det mot en katalog utifrån en URL-sträng, så här:

var urlStr:String = "file:///C:/AIR Test/"; 
var file:File = new File() 
file.url = urlStr; 

Mer information finns i Ändra File-sökvägar.

Låta användarna bläddra för att välja en katalog

Klassen File omfattar metoden browseForDirectory(), som visar en systemdialogruta där användaren kan välja en katalog och tilldela den till objektet. Metoden browseForDirectory() är asynkron. Den skickar en select-händelse om användaren väljer en katalog och klickar på knappen Öppna, eller skickar en cancel-händelse om användaren klickar på knappen Avbryt.

Följande kod gör så att användaren kan välja en katalog och returnerar katalogsökvägen när katalogen väljs:

var file:File = new File(); 
file.addEventListener(Event.SELECT, dirSelected); 
file.browseForDirectory("Select a directory"); 
function dirSelected(e:Event):void { 
    trace(file.nativePath); 
}
Obs! I Android stöds metoden browseForDirectory() inte. Om du anropar den här metoden har det ingen effekt alls, utan då skickas en cancel-händelse direkt. Om du vill att användaren ska kunna välja en katalog måste du använda en anpassad, programdefinierad dialogruta i stället.

Peka mot den katalog som programmet anropas från

Du kan hämta den katalogplats som programmet anropas från genom att kontrollera egenskapen currentDirectory för InvokeEvent-objektet som skickas när programmet anropas. Mer information finns i Hämta kommandoradsargument.

Peka ett File-objekt mot en fil

Du kan ställa in filen som ett File-objekt pekar mot på olika sätt.

Peka mot en explicit filsökväg

Viktigt! Om du pekar på en explicit sökväg kan det innebära att koden inte fungerar på alla plattformar. Sökvägen C:/foo.txt fungerar till exempel bara på Windows. Du kan använda de statiska egenskaperna i File-objektet, som File.applicationStorageDirectory, för att leta upp en katalog som fungerar på alla plattformar. Använd sedan metoden resolvePath() (se Ändra File-sökvägar) för att navigera till en relativ sökväg.

Du kan använda egenskapen url för ett File-objekt om du vill peka det mot en fil eller katalog utifrån en URL-sträng, så här:

var urlStr:String = "file:///C:/AIR Test/test.txt"; 
var file:File = new File() 
file.url = urlStr; 

Du kan också skicka URL:en till konstruktorfunktionen File(), så här:

var urlStr:String = "file:///C:/AIR Test/test.txt"; 
var file:File = new File(urlStr); 

Egenskapen url returnerar alltid den URI-kodade versionen för URL:en (blanksteg ersätts till exempel med "%20):

file.url = "file:///c:/AIR Test"; 
trace(file.url); // file:///c:/AIR%20Test 

Du kan också använda egenskapen nativePath för ett File-objekt om du vill ställa in en explicit sökväg. När följande kod körs på en Windows-dator ställs ett File-objekt in på att testa filen test.txt i AIR-underkatalogen Test på enhet C:

var file:File = new File(); 
file.nativePath = "C:/AIR Test/test.txt"; 

Du kan också skicka den här sökvägen till konstruktorfunktionen File(), så här:

var file:File = new File("C:/AIR Test/test.txt"); 

Använd snedstreck (/) som sökvägsavgränsare för egenskapen nativePath. På Windows kan du även använda omvänt snedstreck (\), men då kommer programmet inte att fungera på alla plattformar.

Mer information finns i Ändra File-sökvägar.

Gå igenom filer i en katalog

Med metoden getDirectoryListing() för ett File-objekt kan du hämta en array med File-objekt som pekar mot filer och underkataloger på en katalogs rotnivå. Mer information finns i Gå igenom kataloger.

Låta användarna bläddra för att välja en fil

Klassen File omfattar metoder som visar en systemdialogruta där användaren kan välja en fil och tilldela den till objektet:

  • browseForOpen()

  • browseForSave()

  • browseForOpenMultiple()

Dessa metoder är asynkrona. Metoden browseForOpen() och browseForSave() skickar den valda händelsen när användaren väljer en fil (eller en målsökväg när det gäller browseForSave()). Med metoderna browseForOpen() och browseForSave() pekar mål-File-objektet mot de valda filerna. Metoden browseForOpenMultiple() skickar en selectMultiple-händelse när användaren väljer filer. Händelsen selectMultiple är av typen FileListEvent, som har en files-egenskap som är en array med File-objekt (som pekar mot de valda filerna).

Följande kod visar dialogrutan ”Öppna” för användaren där användaren kan välja en fil:

var fileToOpen:File = File.documentsDirectory; 
selectTextFile(fileToOpen); 
 
function selectTextFile(root:File):void 
{ 
    var txtFilter:FileFilter = new FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml"); 
    root.browseForOpen("Open", [txtFilter]); 
    root.addEventListener(Event.SELECT, fileSelected); 
} 
 
function fileSelected(event:Event):void 
{ 
    trace(fileToOpen.nativePath); 
} 

Om programmet har en annan webbläsardialogruta öppen när du anropar en bläddringsmetod, returneras ett Error-undantag.

Ändra File-sökvägar

Du kan också ändra sökvägen för ett befintligt File-objekt genom att anropa metoden resolvePath() eller ändra egenskapen nativePath eller url för objektet, som i följande exempel (i Windows):

var file1:File = File.documentsDirectory; 
file1 = file1.resolvePath("AIR Test"); 
trace(file1.nativePath); // C:\Documents and Settings\userName\My Documents\AIR Test 
var file2:File = File.documentsDirectory; 
file2 = file2.resolvePath(".."); 
trace(file2.nativePath); // C:\Documents and Settings\userName 
var file3:File = File.documentsDirectory; 
file3.nativePath += "/subdirectory"; 
trace(file3.nativePath); // C:\Documents and Settings\userName\My Documents\subdirectory 
var file4:File = new File(); 
file4.url = "file:///c:/AIR Test/test.txt"; 
trace(file4.nativePath); // C:\AIR Test\test.txt 

När du använder egenskapen nativePath använder du snedstrecket (/) som katalogavgränsare. På Windows kan du även använda omvänt snedstreck (\), men du bör inte göra det eftersom det kan innebära att koden inte fungerar på alla plattformar.

URL-scheman som stöds i AIR

I AIR kan du använda följande URL-scheman när du definierar egenskapen url för ett File-objekt:

URL-schema

Beskrivning

file

Använd detta när du anger en sökväg som är relativ till filsystemets rot. Till exempel:

file:///c:/AIR Test/test.txt

URL-standarden anger att en fil-URL har formatet file://<värd>/<sökväg>. I vissa fall kan <värd> vara en tom sträng, som tolkas som ”datorn som URL:en tolkas från”. Därför innehåller fil-URL:er ofta tre snedstreck (///).

app

Använd detta när du anger en sökväg som är relativ till rotkatalogen för det installerade programmet (katalogen som innehåller filen application.xml för det installerade programmet). Följande sökväg pekar mot en bildunderkatalog till katalogen med det installerade programmet:

app:/images

app-storage

Använd detta när du anger en sökväg som är relativ till programmets lagerkatalog. För varje installerat program definieras en unik programlagringskatalog i AIR, där du kan lagra data för just det programmet. Följande sökväg pekar till exempel på en prefs.xml-fil i en inställningsunderkatalog till programlagringskatalogen:

app-storage:/settings/prefs.xml

Hitta den relativa sökvägen mellan två filer

Med metoden getRelativePath() kan du söka efter den relativa sökvägen mellan två filer:

var file1:File = File.documentsDirectory.resolvePath("AIR Test"); 
var file2:File = File.documentsDirectory 
file2 = file2.resolvePath("AIR Test/bob/test.txt"); 
 
trace(file1.getRelativePath(file2)); // bob/test.txt 

Den andra parametern för metoden getRelativePath(), parametern useDotDot, gör att syntaxen .. kan returneras i resultat, vilket anger överordnade kataloger:

var file1:File = File.documentsDirectory; 
file1 = file1.resolvePath("AIR Test"); 
var file2:File = File.documentsDirectory; 
file2 = file2.resolvePath("AIR Test/bob/test.txt"); 
var file3:File = File.documentsDirectory; 
file3 = file3.resolvePath("AIR Test/susan/test.txt"); 
 
trace(file2.getRelativePath(file1, true)); // ../.. 
trace(file3.getRelativePath(file2, true)); // ../../bob/test.txt 

Skaffa kanoniska versioner av filnamn

Fil- och sökvägsnamn är inte skiftlägeskänsliga i Windows och Mac OS. Nedan pekar två File-objekt mot samma fil:

File.documentsDirectory.resolvePath("test.txt"); 
File.documentsDirectory.resolvePath("TeSt.TxT");

Dokument- och katalognamnen har emellertid samma skiftläge. Nedan förutsätts det att det finns en mapp med namnet AIR Test i dokumentkatalogen:

var file:File = File.documentsDirectory.resolvePath("AIR test"); 
trace(file.nativePath); // ... AIR test 
file.canonicalize(); 
trace(file.nativePath); // ... AIR Test 

Metoden canonicalize() konverterar nativePath-objektet så att rätt skiftläge används för fil- eller katalognamnet. Om användningen av gemener och versaler är det enda som skiljer olika filer åt i ett system som är skiftlägeskänsligt (t.ex. Linux) justerar canonicalize()-metoden sökvägen så att den matchar den första fil som hittas (i den ordning som fastställs av filsystemet).

Du kan också använda metoden canonicalize() om du vill konvertera korta filnamn (”8.3”-namn) till långa filnamn i Windows, som i följande exempel:

var path:File = new File(); 
path.nativePath = "C:\\AIR~1"; 
path.canonicalize(); 
trace(path.nativePath); // C:\AIR Test

Arbeta med paket och symboliska länkar

Olika operativsystem stöder paketfiler och filer med symboliska länkar:

Paket – I Mac OS kan kataloger definieras som paket och visas som en fil i Finder i Mac OS i stället för som en katalog.

Symboliska länkar – Symboliska länkar stöds i Mac OS, Linux och Windows Vista. Med hjälp av symboliska länkar kan en fil peka på en annan fil eller katalog på disken. Även om de påminner om varandra är symboliska länkar och alias inte samma sak. Ett alias rapporteras alltid som en fil (i stället för som en katalog), och om du läser eller skriver till aliaset eller genvägen påverkar detta inte den ursprungliga fil eller katalog som dessa pekar på. En symbolisk länk fungerar däremot precis som den fil eller katalog den pekar på. Den kan rapporteras som en fil eller katalog, och om du läser eller skriver till en symbolisk länk påverkar detta den fil eller katalog som länken pekar på, inte den symboliska länken. I Windows är dessutom egenskapen isSymbolicLink för ett File-objekt som refererar till en knutpunkt (används i NTFS-filsystemet) angiven som true .

Klassen File omfattar egenskaperna isPackage och isSymbolicLink som kontrollerar om ett File-objekt refererar till ett paket eller en symbolisk länk.

Följande kod itererar genom användarens skrivbordskatalog, och visar underkataloger som inte är paket:

var desktopNodes:Array = File.desktopDirectory.getDirectoryListing(); 
for (var i:uint = 0; i < desktopNodes.length; i++)  
{ 
    if (desktopNodes[i].isDirectory && !!desktopNodes[i].isPackage) 
    { 
        trace(desktopNodes[i].name); 
    } 
} 

Följande kod itererar genom användarens skrivbordskatalog, och visar filer och kataloger som inte är symboliska länkar:

var desktopNodes:Array = File.desktopDirectory.getDirectoryListing(); 
for (var i:uint = 0; i < desktopNodes.length; i++)  
{ 
    if (!desktopNodes[i].isSymbolicLink) 
    { 
        trace(desktopNodes[i].name); 
    } 
} 

Metoden canonicalize() ändrar sökvägen för en symbolisk länk till att peka mot filen eller katalogen som länken refererar till. Följande kod itererar genom användarens skrivbordskatalog, och rapporterar sökvägarna som refereras av filer som är symboliska länkar:

var desktopNodes:Array = File.desktopDirectory.getDirectoryListing(); 
for (var i:uint = 0; i < desktopNodes.length; i++)  
{ 
    if (desktopNodes[i].isSymbolicLink) 
    { 
        var linkNode:File = desktopNodes[i] as File; 
        linkNode.canonicalize(); 
        trace(linkNode.nativePath); 
    } 
} 

Ta reda på ledigt utrymme på en volym

Egenskapen spaceAvailable för ett File-objekt anger det lediga utrymmet vid File-platsen, i byte. Följande kod kontrollerar det lediga utrymmet i programlagringskatalogen:

trace(File.applicationStorageDirectory.spaceAvailable); 

Om filobjektet refererar till en katalog, visar egenskapen spaceAvailable utrymmet i den katalog som filen kan använda. Om filobjektet refererar till en fil, visar egenskapen spaceAvailable utrymmet som filen kan växa till. Om filplatsen inte finns, är egenskapen spaceAvailable inställd på 0. Om filobjektet refererar till en symbolisk länk, ställs egenskapen spaceAvailable in på det lediga utrymme som den symboliska länken pekar ut.

Vanligtvis är det tillgängliga utrymmet för en katalog eller fil samma som det tillgängliga utrymmet i volymen som innehåller katalogen eller filen. Kvoter och kataloggränser räknas dock med i tillgängligt utrymme.

Att lägga till en fil eller en katalog i en volym kräver generellt mer utrymme än den befintliga storleken på filen eller på innehållet i katalogen. Operativsystemet kan till exempel kräva mer utrymme för att lagra indexinformation. Eller också kan disksektorerna kräva mer utrymme. Tillgängligt utrymme ändras dynamiskt. Du kan alltså inte förvänta dig att tilldelas hela det rapporterade utrymmet för fillagring. Information om hur du skriver till filsystemet finns i Läsa och skriva filer.

Metoden StorageVolumeInfo.getStorageVolumes() ger mer detaljerad information om monterade lagringsvolymer (se Arbeta med lagringsvolymer).

Öppna filer med standardsystemprogrammet

I AIR 2 kan du öppna en fil med hjälp av det program som registrerats i operativsystemet för att öppna filen. Ett AIR-program kan till exempel öppna en DOC-fil med det program som registrerats för att öppna den. Använd metoden openWithDefaultApplication() för ett File-objekt för att öppna filen. Med följande kod öppnas till exempel en fil med namnet test.doc på användarens skrivbord med hjälp av standardprogrammet för DOC-filer:

var file:File = File.deskopDirectory; 
file = file.resolvePath("test.doc"); 
file.openWithDefaultApplication();
Obs! I Linux avgörs standardprogrammet för en fil av filens MIME-typ, inte genom filtillägget.

Med följande kod kan användaren navigera till en mp3-fil och öppna den i standardprogrammet för att spela upp mp3-filer:

var file:File = File.documentsDirectory; 
var mp3Filter:FileFilter = new FileFilter("MP3 Files", "*.mp3"); 
file.browseForOpen("Open", [mp3Filter]); 
file.addEventListener(Event.SELECT, fileSelected); 
 
function fileSelected(e:Event):void 
{ 
    file.openWithDefaultApplication(); 
}

Du kan inte använda metoden openWithDefaultApplication() med filer som finns i programkatalogen.

Med AIR förhindras du att använda metoden openWithDefaultApplication() för att öppna vissa filer. I Windows förhindras du av AIR att öppna filer med vissa filtyper, till exempel EXE eller BAT. I Mac OS och Linux förhindrar AIR att du öppnar filer i vissa program. (Det gäller bland annat terminalen och AppletLauncher i Mac OS och csh, bash eller ruby i Linux.) Om du försöker öppna någon av dessa filer med metoden openWithDefaultApplication() resulterar det i ett undantag. En komplett lista över förhindrade filtyper finns under språkreferensposten för metoden File.openWithDefaultApplication().

Obs! Denna begränsning gäller inte för AIR-program som installerats med ett internt installationsprogram (ett utökat skrivbordsprogram), se Paketera ett AIR-program i ett internt installationsprogram.