AIR'de File nesneleriyle çalışma

Adobe AIR 1.0 ve üstü

File nesnesi dosya sistemindeki bir dosyaya veya dizine işaretçidir.

File sınıfı FileReference sınıfını genişletir. AIR'nin yanı sıra Adobe® Flash® Player'da da mevcut olan FileReference sınıfı, bir dosyaya işaretçiyi temsil eder. File sınıfı güvenlik nedenleriyle Flash Player'da açık olmayan özellikleri ve yöntemleri ekler (tarayıcıda çalışan bir SWF dosyasında).

File sınıfı hakkında

File sınıfını aşağıdaki işlemler için kullanabilirsiniz:

  • Kullanıcı dizini, kullanıcının documents dizini, uygulamanın başlatıldığı dizin ve uygulama dizini de dahil olmak üzere özel dizinlerin yolunu alma

  • Dosyaları ve dizinleri kopyalama

  • Dosyaları ve dizinleri taşıma

  • Dosyaları ve dizinleri silme (veya çöp kutusuna taşıma)

  • Bir dizinde bulunan dosyaları ve dizinleri listeleme

  • Geçici dosyalar ve klasörler oluşturma

Bir File nesnesi dosya yoluna işaret ettikten sonra, FileStream sınıfını kullanarak dosya verilerini okumak ve yazmak için dosya yolunu kullanabilirsiniz.

File nesnesi henüz var olmayan bir dosyanın veya dizinin yoluna işaret edebilir. Böyle bir File nesnesini dosya veya dizin oluştururken kullanabilirsiniz.

File nesnelerinin Yolları

Her File nesnesi, yolunu tanımlayan iki özelliğe sahiptir:

Özellik

Açıklama

nativePath

Bir dosyanın platforma özgü yolunu belirtir. Örneğin Windows'ta bir yol "c:\Sample directory\test.txt" olurken Mac OS'de "/Sample directory/test.txt" olabilir. nativePath özelliği, Windows'ta dizin ayırıcı karakteri olarak ters eğik çizgi (\) karakterini ve Mac OS ile Linux'ta eğik çizgi (/) karakterini kullanır.

url

Bir dosyaya işaret etmek için, dosya URL şemasını kullanabilir. Örneğin Windows'ta bir yol "file:///c:/Sample%20directory/test.txt" olurken Mac OS'de "file:///Sample%20directory/test.txt" olabilir. Çalışma zamanı file öğesinin yanında başka özel URL şemaları da içerir ve bunlar Desteklenen AIR URL şemaları bölümünde anlatılmaktadır

File sınıfı, Mac OS, Windows ve Linux'ta standart dizinlere işaret etmek üzere statik özellikler içerir. Bu özellikler şunları içerir:

  • File.applicationStorageDirectory , yüklü olan her AIR uygulamasına özgü bir depolama dizini. Bu dizin dinamik uygulama varlıklarını ve kullanıcı tercihlerini saklamak için uygun bir konumdur. Büyük miktardaki verileri başka bir alanda saklamayı düşünün.

    Android ve iOS'de, uygulama kaldırıldığında veya kullanıcı uygulama verilerini silmeyi seçtiğinde uygulama depolama dizini kaldırılır, ancak diğer platformlarda bu yaşanmaz.

  • File.applicationDirectory : uygulamanın yüklendiği dizin (yüklü olan diğer varlıklarla birlikte). Bazı işletim sistemlerinde, uygulama fiziksel bir dizin yerine tek bir pakette depolanır. Bu durumda içeriğe yerel yol kullanılarak erişilemeyebilir. Uygulama dizini salt okunurdur.

  • File.desktopDirectory : kullanıcının masaüstü dizini. Bir platform masaüstü dizini tanımlamıyorsa dosya sistemindeki başka bir konum kullanılır.

  • File.documentsDirectory : kullanıcının belgeler dizini. Bir platform belgeler dizini tanımlamıyorsa dosya sistemindeki başka bir konum kullanılır.

  • File.userDirectory : kullanıcı dizini. Bir platform kullanıcı dizini tanımlamıyorsa dosya sistemindeki başka bir konum kullanılır.

Not: Bir platform masaüstü, belgeler veya kullanıcı dizinleri için standart konumlar tanımlamıyorsa, File.documentsDirectory , File.desktopDirectory ve File.userDirectory aynı dizine başvurabilir.

Bu özelliklerin farklı işletim sistemlerinde farklı değerleri vardır. Örneğin, Mac ve Windows'ta kullanıcı masaüstü dizini için farklı yerel yollar vardır. Ancak, File.desktopDirectory özelliği her platformda uygun bir dizin yolunu gösterir. Farklı platformlarda düzgün çalışan uygulamalar yazmak için, bu özellikleri uygulama tarafından kullanılan diğer dizin ve dosyaları başvuru olarak almak için temel olarak kullanın. Sonra, yolu daraltmak için resolvePath() yöntemini kullanın. Örneğin, bu kod uygulama saklama dizinindeki preferences.xml dosyasına işaret ediyor.

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

File sınıfı belirli bir dosya yoluna işaret etmenize izin verse de, bunu yapmak farklı platformlar üzerinde çalışmayan uygulamalara sebep olabilir. Örneğin, C:\Documents and Settings\cem\ yalnızca Windows'da çalışır. Bu sebeplerden dolayı, en iyisi File sınıfının File.documentsDirectory gibi statik özelliklerini kullanmaktır.

Ortak dizin konumları

Platform

Dizin türü

Tipik dosya sistemi konumu

Android

Uygulama

/data/data/

Uygulama depolama

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

Önbellek

/data/data/applicationID/cache

Masaüstü

/mnt/sdcard

Belgeler

/mnt/sdcard

Geçici

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

Kullanıcı

/mnt/sdcard

iOS

Uygulama

/var/mobile/Applications/uid/filename.app

Uygulama depolama

/var/mobile/Applications/uid/Library/Application Support/applicationID/Local Store

Önbellek

/var/mobile/Applications/uid/Library/Caches

Masaüstü

erişilmez

Belgeler

/var/mobile/Applications/uid/Documents

Geçici

/private/var/mobile/Applications/uid/tmp/FlashTmpNNN

Kullanıcı

erişilmez

Linux

Uygulama

/opt/filename/share

Uygulama depolama

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

Masaüstü

/home/userName/Desktop

Belgeler

/home/userName/Documents

Geçici

/tmp/FlashTmp.randomString

Kullanıcı

/home/userName

Mac

Uygulama

/Applications/filename.app/Contents/Resources

Uygulama depolama

/Users/ userName /Library/Preferences/ applicationid /Local Store (AIR 3.2 ve öncesi)

path /Library/Application Support/ applicationid /Local Store (AIR 3.3 ve üstü): Burada yol /Users/ userName /Library/Containers/ bundle-id /Data (korumalı ortam) veya /Users/userName (korumalı bir ortamın dışında çalıştırırken) şeklindedir.

Önbellek

/Users/userName/Library/Caches

Masaüstü

/Users/ userName /Desktop

Belgeler

/Users/ userName /Documents

Geçici

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

Kullanıcı

/Users/ userName

Windows

Uygulama

C:\Program Files\filename

Uygulama depolama

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

Önbellek

C:\Documents and settings\userName\Local Settings\Temp

Masaüstü

C:\Documents and settings\userName\Desktop

Belgeler

C:\Documents and settings\userName\My Documents

Geçici

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

Kullanıcı

C:\Documents and settings\userName

Bu dizinlerin gerçek yerel yolları işletim sistemine ve bilgisayar konfigürasyonuna göre değişir. Bu tabloda gösterilen yollar tipik örneklerdir. Uygulamanızın herhangi bir platformda düzgün çalışmasını sağlamak için bu dizinlere başvururken uygun statik File sınıfı özelliklerini kullanmanız gerekir. Gerçek bir AIR uygulamasında tabloda gösterilen applicationID ve filename değerleri uygulama açıklayıcısından alınır. Uygulama açıklayıcısında bir yayıncı kimliği belirtirseniz, yayıncı kimliği bu yollarda uygulama kimliğine eklenir. userName değeri yüklemeyi yapan kullanıcının hesap adıdır.

File nesnesini bir dizine işaret etme

Bir File nesnesini bir dizine işaret etmesi için ayarlamanın farklı yolları vardır.

Kullanıcının ana dizinine işaret etme

Bir File nesnesini kullanıcının ana dizinine yönlendirebilirsiniz. Aşağıdaki kod bir File nesnesini ana dizinin AIR Test alt dizinine işaret etmesi için ayarlar:

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

Kullanıcının documents dizinine işaret etme

Bir File nesnesini kullanıcının documents dizinine yönlendirebilirsiniz. Aşağıdaki kod bir File nesnesini documents dizininin AIR Test alt dizinine işaret etmesi için ayarlar:

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

Masaüstü dizinine işaret etme

Bir File nesnesini masaüstüne işaret edebilirsiniz. Aşağıdaki kod bir File nesnesini masaüstünün AIR Test alt dizinine işaret etmesi için ayarlar:

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

Uygulama depolama dizinine işaret etme

Bir File nesnesini uygulama depolama dizinine işaret edebilirsiniz. Her AIR uygulaması için, uygulama depolama dizinini tanımlayan ilişkilendirilmiş, benzersiz bir yol vardır. Bu dizin her uygulama ve kullanıcı için benzersizdir. Bu dizini kullanıcıya özgü, uygulamaya özgü verileri saklamak için kullanabilirsiniz (kullanıcı verileri ve tercihler dosyaları gibi). Örneğin aşağıdaki kod bir File nesnesini uygulama depolama dizininde bulunan bir tercihler dosyası olan prefs.xml dosyasına işaret eder:

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

Uygulama deposu dizini konumu genellikle kullanıcı adı ve uygulama kimliğine bağlıdır. Aşağıdaki dosya sistemi konumları uygulamanızda hata ayıklamaya yardımcı olmak için verilmiştir. Bu dizindeki dosyaları çözümlemek için her zaman File.applicationStorage özelliğini veya app-storage: URI şemasını kullanmanız gerekir:

  • Mac OS'de AIR sürümüne göre değişiklik gösterir:

    AIR 3.2 ve öncesi : /Users/user name/Library/Preferences/ applicationID /Local Store/

    AIR 3.3 ve üstü : path /Library/Application Support/ applicationID /Local Store : Burada path /Users/ username /Library/Containers/ bundle-id /Data (korumalı ortam) veya /Users/ username (korumalı ortamın dışında çalıştırırken) şeklindedir

    Örneğin (AIR 3.2):

    /Users/babbage/Library/Preferences/com.example.TestApp/Local Store
  • Windows'ta—Belgeler ve Ayarlar dizininde:

    C:\Documents and Settings\user name \Application Data\ applicationID \Local Store\

    Örneğin:

    C:\Documents and Settings\babbage\Application Data\com.example.TestApp\Local Store
  • Linux'ta:

    /home/ kullanıcı adı /.appdata/ applicationID /Local Store/

    Örneğin:

    /home/babbage/.appdata/com.example.TestApp/Local Store
  • Android'de şu konumda:

    /data/data/ androidPackageID / applicationID/Local Store

    Örneğin:

    /data/data/air.com.example.TestApp/com.example.TestApp/Local Store
Not: Bir uygulamanın yayıncı kimliği varsa, yayıncı kimliği aynı zamanda uygulama depolama dizinine giden yolun bir parçası olarak kullanılır.

File.applicationStorageDirectory ile oluşturulan bir File nesnesinin URL'si (ve url özelliği), aşağıda gösterildiği gibi app-storage URL şemasını kullanır (bkz. Desteklenen AIR URL şemaları ):

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

Uygulama dizinine işaret etme

Bir File nesnesini uygulamanın yüklendiği, uygulama dizini olarak bilinen dizine işaret edebilirsiniz. Bu dizine File.applicationDirectory özelliğini kullanarak başvurabilirsiniz. Bu dizini uygulama tanımlayıcı dosyasını veya uygulamayla yüklenen başka kaynakları incelemek için kullanabilirsiniz. Örneğin aşağıdaki kod bir File nesnesini uygulama dizinindeki images adlı bir dizine işaret eder:

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

File.applicationDirectory ile oluşturulan bir File nesnesinin URL'si (ve url özelliği), aşağıda gösterildiği gibi app URL şemasını kullanır (bkz. Desteklenen AIR URL şemaları ):

var dir:File = File.applicationDirectory; 
dir = dir.resolvePath("images"); 
trace(dir.url); // app:/images
Not: Android'de uygulama paketi içindeki dosyalara nativePath aracılığıyla erişilmez. nativePath özelliği boş bir dizedir. Uygulama dizinindeki dosyalara erişmek için her zaman yerel yol yerine URL'yi kullanın.

Önbellek dizinine işaret etme

File.cacheDirectory özelliğini kullanarak işletim sisteminin geçici veya önbellek dizinine bir File nesnesi işaret edebilirsiniz. Bu dizinde, uygulama tarafından çalıştırılması gerekmeyen ve silinmeleri durumunda kullanıcı için sorun oluşturmayacak veya veri kaybına neden olmayacak geçici dosyalar bulunur.

Çoğu işletim sisteminde önbellek dizini geçici bir dizindir. iOS'ta önbellek dizini, uygulama kütüphanesinin Önbellekler dizinine karşılık gelir. Bu dizindeki dosyalar, çevrimiçi depolama alanına yedeklenmez ve aygıtın kullanılabilir depolama alanı çok düşükse işletim sistemi tarafından olanak dahilinde silinebilir. Daha fazla bilgi için bkz. Dosya yedeklemeyi ve önbelleğe almayı denetleme .

Dosya sistemi köküne işaret etme

File.getRootDirectories() yöntemi bir Windows bilgisayarındaki C: ve bağlanmış birimler gibi tüm kök birimleri listeler. Bu yöntem, Mac OS ve Linux'ta her zaman bilgisayar için benzersiz bir kök dizin ("/" dizini) döndürür. StorageVolumeInfo.getStorageVolumes() yöntemi monte edilmiş depolama birimleri hakkında daha ayrıntılı bilgi sağlar (bkz. Depolama birimleriyle çalışma ).

Not: Dosya sisteminin kökü Android'de okunabilir değildir. Dizine yerel yol ile başvuran bir File nesnesi olan “/” öğesi döndürülür, ancak bu nesnenin özellikleri doğru değerlere sahip değildir. Örneğin, spaceAvailable her zaman 0 değerine sahiptir.

Açık bir dizine işaret etme

Aşağıdaki örnekte olduğu gibi, File nesnesinin nativePath özelliğini ayarlayarak File nesnesini açık bir dizine işaret edebilirsiniz (Windows'ta):

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

Önemli: Bu şekilde açık bir yola işaret etmek farklı platformlar üzerinde çalışmayan koda sebep olabilir. Örneğin, önceki örnek yalnızca Windows'da çalışır. Platformlar arası çalışan bir dizini bulmak için File nesnesinin File.applicationStorageDirectory gibi statik özelliklerini kullanabilirsiniz. Daha sonra bir göreceli yola gitmek için resolvePath() (bir sonraki kısma bakın) yöntemini kullanabilirsiniz.

Göreceli yollara gitme

Belirli bir yola göreceli olan bir yol edinmek için resolvePath() yöntemini kullanabilirsiniz. Aşağıdaki kod bir File nesnesini kullanıcının ana dizininin "AIR Test" alt dizinine işaret etmesi için ayarlar:

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

Ayrıca, aşağıda gösterildiği gibi File nesnesini URL dizesine bağlı bir dizine işaret etmek için de nesnenin url özelliğini kullanabilirsiniz:

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

Daha fazla bilgi için bkz. Dosya yollarını değiştirme .

Kullanıcının bir dizin seçmek için göz atmasını sağlama

File sınıfı, kullanıcının nesneye atamak için bir dizin seçebileceği sistem iletişim kutusu sağlayan browseForDirectory() yöntemini içerir. browseForDirectory() yöntemi senkronize değildir. File nesnesi kullanıcı bir dizin seçip Aç düğmesini tıklatırsa bir select olayı veya kullanıcı İptal düğmesini tıklatırsa bir cancel olayı gönderir.

Örneğin aşağıdaki kod kullanıcının bir dizin seçmesine olanak tanır ve seçilirse dizin yolunu çıkarır:

var file:File = new File(); 
file.addEventListener(Event.SELECT, dirSelected); 
file.browseForDirectory("Select a directory"); 
function dirSelected(e:Event):void { 
    trace(file.nativePath); 
}
Not: Android'de browseForDirectory() yöntemi desteklenmez. Bu yöntemi çağırma işleminin bir etkisi yoktur; hemen bir cancel olayı gönderilir. Kullanıcıların dizin seçmesine izin vermek için bunun yerine özel, uygulama tanımlı bir iletişim kutusu kullanın.

Uygulamanın çağrıldığı dizine işaret etme

Uygulama çağrıldığında gönderilen InvokeEvent nesnesinin currentDirectory özelliğini işaretleyerek bir uygulamanın çağrıldığı dizin konumunu alabilirsiniz. Ayrıntılar için bkz. Komut satırı argümanlarını yakalama .

File nesnesini bir dosyaya işaret etme

Bir File nesnesinin işaret ettiği dosyayı ayarlamanın farklı yolları vardır.

Açık dosya yoluna işaret etme

Önemli: Açık bir yola işaret etmek farklı platformlar üzerinde çalışmayan koda sebep olabilir. Örneğin C:/foo.txt yolu yalnızca Windows'da çalışır. Platformlar arası çalışan bir dizini bulmak için File nesnesinin File.applicationStorageDirectory gibi statik özelliklerini kullanabilirsiniz. Daha sonra bir göreceli yola gitmek için resolvePath() (bkz. Dosya yollarını değiştirme ) yöntemini kullanabilirsiniz.

Aşağıda gösterildiği gibi File nesnesini URL dizesine bağlı bir dosyaya veya dizine işaret etmek için de nesnenin url özelliğini kullanabilirsiniz:

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

Ayrıca URL'yi aşağıda olduğu gibi File() yapıcı işlevine de iletebilirsiniz:

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

url özelliği her zaman URL'nin URI kodlu sürümünü döndürür (örneğin boşluklar "%20 ile değiştirilir):

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

Ayrıca açık bir yol ayarlamak için File nesnesinin nativePath özelliğini de kullanabilirsiniz. Örneğin aşağıdaki kod Windows yüklü bir bilgisayarda çalıştırıldığında, File nesnesini, C: sürücüsünün AIR Test alt dizinindeki test.txt dosyasına ayarlar:

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

Ayrıca bu yolu aşağıda olduğu gibi File() yapıcı işlevine de iletebilirsiniz:

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

nativePath özelliği için yol sınırlayıcı olarak eğik çizgi (/) karakterini kullanın. Windows'da, ters eğik çizgi (\) karakterini de kullanabilirsiniz, ancak bunu yapmak farklı platformlar üzerinde çalışmayan uygulamalara sebep olabilir.

Daha fazla bilgi için bkz. Dosya yollarını değiştirme .

Bir dizindeki dosyaları numaralandırma

Bir dizinin kök düzeyinde dosyalara ve alt dizinlere işaret eden File nesnelerinin bir dizisini almak için File nesnesinin getDirectoryListing() yöntemini kullanabilirsiniz. Daha fazla bilgi için bkz. Dizinleri numaralandırma .

Kullanıcının bir dosya seçmek için gözatmasını sağlama

File sınıfı, kullanıcının nesneye atamak için bir dosya seçebileceği sistem iletişim kutusu sağlayan aşağıdaki yöntemleri içerir.

  • browseForOpen()

  • browseForSave()

  • browseForOpenMultiple()

Bu yöntemlerin tümü senkronize olmayan yöntemlerdir. Kullanıcı bir dosya seçtiğinde (veya browseForSave() durumunda hedef yol) browseForOpen() ve browseForSave() yöntemleri select olayını gönderir. browseForOpen() ve browseForSave() yöntemleriyle, seçimden sonra hedef File nesnesi seçili dosyalara işaret eder. Kullanıcı dosyaları seçtiğinde, browseForOpenMultiple () yöntemi bir selectMultiple olayı gönderir. selectMultiple olayı, File nesneleri dizisi olan bir files özelliğine sahip olan (seçili dosyalara işaret eden) FileListEvent türüdür.

Örneğin aşağıdaki kod kullanıcıya, kullanıcının bir dosya seçebileceği “Aç” iletişim kutusunu sunar:

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

Bir browse yöntemini çağırdığınızda uygulamada başka bir tarayıcı iletişim kutusu açıksa, çalışma zamanı bir Hata istisnası atar.

Not: Android'de browseForOpen() ve browseForOpenMultiple() yöntemleri ile yalnızca görüntü, video ve ses dosyaları seçilebilir. Ayrıca, browseForSave() iletişim kutusu da kullanıcı rastgele dosya adı girebilse bile yalnızca medya dosyalarını görüntüler. Medya dosyası olmayan dosyaları açmak ve kaydetmek için bu yöntemler yerine özel iletişim kutuları kullanmayı göz önünde bulundurmalısınız.

Dosya yollarını değiştirme

Ayrıca aşağıdaki örneklerde olduğu gibi, varolan bir File nesnesinin yolunu resolvePath() yöntemini çağırarak veya nesnenin nativePath ya da url özelliğini değiştirerek de değiştirebilirsiniz:

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 

nativePath özelliğini kullanırken, eğik çizgi (/) karakterini dizin ayırıcı karakter olarak kullanın. Windows'da ters eğik çizgi (\) karakterini de kullanabilirsiniz, ancak bu platformlar arasında çalışmayan koda sebep olacağından bunu yapmamalısınız.

Desteklenen AIR URL şemaları

AIR'de bir File nesnesinin url özelliğini tanımlarken, aşağıdaki URL şemalarından herhangi birini kullanabilirsiniz:

URL şeması

Açıklama

file

Dosya sisteminin köküne göreceli olan bir yol belirtmek için kullanın. Örneğin:

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

URL standardı bir dosya URL'sinin file://<host>/<path> formunu alacağını belirtir. Özel bir durum olarak <host> , "URL'nin yorumlandığı bilgisayar" olarak yorumlanan boş dize olabilir. Bu nedenle dosya URL'leri genellikle üç eğik çizgiye (///) sahiptir.

app

Yüklü uygulamanın kök dizinine göreceli bir yol belirtmek için kullanın (yüklü uygulama için application.xml dosyasını içeren dizin). Örneğin aşağıdaki yol, yüklü uygulamanın dizininin görüntüler alt dizinine işaret eder:

app:/images

app-storage

Uygulama depolama dizinine göreceli bir yol belirtmek için kullanın. AIR her yüklenen uygulama için, o uygulamaya özgü verilerin saklanmasına yönelik kullanışlı bir yer olan benzersiz bir uygulama depolama dizini tanımlar. Örneğin aşağıdaki yol, uygulama depolama dizininin ayarlar alt dizininde bulunan bir prefs.xml dosyasını işaret eder:

app-storage:/settings/prefs.xml

Dosya yedeklemeyi ve önbelleğe almayı denetleme

Aralarında en dikkat çekeni iOS ve Mac OS X olan bazı işletim sistemleri kullanıcılara uygulama dosyalarını uzak bir depolama alanına otomatik olarak yedekleme olanağı tanır. Ayrıca, iOS'ta dosyaların yedeklenip yedeklenemeyebileceği ve farklı amaçlara yönelik dosyaların nereye depolanabileceği konusunda kısıtlamalar bulunur.

Aşağıdakiler, dosya yedekleme ve depolama konusunda Apple talimatlarıyla nasıl uyum sağlanacağını özetlemektedir. Daha fazla bilgi için sonraki bölümlere bakın.

  • Bir dosyayı yedeklemeye gerek olmadığını ve (yalnızca iOS) aygıt depolama alanının azalması durumunda işletim sistemi tarafından silinebileceğini belirtmek için dosyayı önbellek dizinine ( File.cacheDirectory ) kaydedin. Bu, iOS'ta tercih edilen depolama konumudur ve yeniden oluşturulabilen veya yeniden indirilebilen birçok dosya için kullanılmalıdır.

  • Bir dosyayı yedeklemeye gerek olmadığını ancak işletim sistemi tarafından silinmemesi gerektiğini belirtmek için, dosyayı uygulama kütüphane dizinlerinden birine (uygulama depolama dizini gibi) ( File.applicationStorageDirectory ) veya belge dizinine ( File.documentsDirectory ) kaydedin. File nesnesinin preventBackup özelliğini true olarak ayarlayın. Bu, yeniden oluşturulabilen veya tekrar indirilebilen ancak çevrimiçi kullanım sırasında uygulamanızın düzgün çalışması için gerekli olan içerik için Apple tarafından gerekli görülür.

Yedekleme için dosyaları belirtme

Yedekleme alanından tasarruf etme ve ağ bant genişliği kullanımını azaltma amacıyla, iOS ve Mac uygulamalarına yönelik Apple talimatlarında, yalnızca kullanıcı girişli veriler veya farklı şekilde yeniden oluşturulamayan ya da indirilemeyen veriler içeren dosyaların yedekleme için tanımlanması gerektiği belirtilmektedir.

Varsayılan olarak, uygulama kütüphanesi klasörlerindeki tüm dosyalar yedeklenir. Mac OS X'te bu, uygulama depolama dizinidir. iOS'ta buna uygulama depolama dizini, uygulama dizini, masaüstü dizini, belge dizini ve kullanıcı dizini (çünkü bu dizinler iOS'ta uygulama kütüphanesine eşleştirilir) dahildir. Sonuç olarak, bu dizinlerdeki dosyalar varsayılan olarak sunucu depolama alanına yedeklenir.

Uygulamanız tarafından yeniden oluşturulabilen bu konumlardan birine bir dosya kaydediyorsanız, dosyayı bayraklayarak işletim sisteminin bunu yedeklemeyeceğini bilmesini sağlayabilirsiniz. Bir dosyanın yedeklenmemesi gerektiğini göstermek için, File nesnesinin preventBackup özelliğini true olarak ayarlayın.

Unutmayın, iOS'ta uygulama kütüphanesi klasörlerinden herhangi birindeki bir dosya (dosyanın preventBackup özelliği true ayarlanmış olsa bile), işletim sistemi tarafından silinmemesi gereken kalıcı bir dosya olarak bayraklanır.

Dosyanın önbelleğe alınmasını ve silinmesini denetleme

iOS uygulamalarına yönelik Apple talimatlarında, yeniden oluşturulabilen içeriğin (mümkün olduğunca), aygıttaki depolama alanının azalması durumunda işletim sistemi tarafından silinmesinin sağlanması gerektiği belirtilir.

iOS'ta, uygulama kütüphanesi klasörlerindeki dosyalar (uygulama depolama dizini veya belge dizini gibi) kalıcı olarak bayraklanır ve işletim sistemi tarafından silinmez.

Uygulama tarafından yeniden oluşturulabilen ve uygulama önbelleği dizinindeki depolama alanı azaldığında rahatlıkla silinebilen dosyalar kaydedin. File.cacheDirectory statik özelliğini kullanarak önbellek dizinine erişin.

iOS'ta önbellek dizini, uygulamanın önbellek dizinine (<Application Home>/Library/Caches) karşılık gelir. Diğer işletim sistemlerinde bu dizin, benzer bir dizine eşleştirilir. Örneğin, Mac OS X'te uygulama kütüphanesindeki Önbellekler dizinine de eşleştirilir. Android'de önbellek dizini uygulamanın önbellek dizinine eşleştirilir. Windows'ta önbellek dizini işletim sistemi geçici dizinine eşleştirilir. Hem Android'de hem de Windows'ta bu, File sınıfına createTempDirectory() ve createTempFile() yöntemlerine yapılan bir çağrıyla erişilen dizinle aynı dizindir.

İki dosya arasındaki göreceli yolu bulma

İki dosya arasındaki göreceli yolu bulmak için getRelativePath() yöntemini kullanabilirsiniz:

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 

getRelativePath() yönteminin ikinci parametresi olan useDotDot parametresi, .. sözdiziminin üst dizinleri göstermek için sonuçlarda döndürülmesine izin verir:

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 

Dosya adlarının kurallı sürümlerini alma

Windows ve Mac OS'de dosya ve yol adları büyük/küçük harfe duyarlı değildir. Aşağıdaki örnekte iki File nesnesi aynı dosyaya işaret etmektedir:

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

Ancak belgeler ve dizin adları büyük harf içerir. Örneğin aşağıda, aşağıdaki örneklerde olduğu gibi documents dizininde AIR Test adlı bir klasör olduğunu varsayılmıştır:

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

canonicalize() yöntemi, dosya veya dizin adı için büyük/küçük harfle yazımı doğru biçimde kullanmak üzere nativePath nesnesini dönüştürür. Büyük/küçük harfe duyarlı dosya sistemlerinde (Linux gibi), yalnızca büyük/küçük harfle yazım açısından farklı olan adlara sahip birden çok dosya bulunuyorsa, canonicalize() yöntemi, bulunan ilk dosyayla eşleşecek biçimde yolu ayarlar (dosya sistemi tarafından belirlenen düzende).

Aşağıdaki örneklerde gösterildiği gibi Windows'ta kısa dosya adlarını ("8.3" adlar) uzun dosya adlarına dönüştürmek için canonicalize() yöntemini de kullanabilirsiniz:

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

Paketlerle ve sembolik bağlarla çalışma

Birçok işletim sistemi paket dosyalarını ve sembolik bağ dosyalarını destekler:

Paketler —Mac OS'de, dizinler paketler olarak belirlenebilir ve Mac OS Finder'da dizin olarak değil, tek bir dosya olarak görünebilir.

Sembolik bağlar —Mac OS, Linux ve Windows Vista, sembolik bağları destekler. Sembolik bağlar bir dosyanın diskteki başka bir dosyaya veya dizine işaret etmesini sağlar. Sembolik bağlar başka adlara benzer olsa da, aynı değildir. Başka ad her zaman bir dosya olarak bildirilir (dizin olarak değil) ve başka ada veya kısayola okuma ya da yazma işlemi hiçbir zaman işaret ettiği orijinal dosyayı veya dizini etkilemez. Diğer yandan sembolik bağ tam olarak işaret ettiği dosya veya dizin gibi davranır. Bir dosya veya dizin olarak bildirilebilir ve sembolik bağa okuma veya yazma işlemi sembolik bağın kendisini değil, işaret ettiği dosyayı veya dizini etkiler. Ayrıca, Windows'ta birleşim noktasını (NTFS dosya sisteminde kullanılan) referans alan bir File nesnesine ilişkin isSymbolicLink özelliği true olarak ayarlanır.

File sınıfı, bir File nesnesinin bir pakete veya sembolik bağa başvurup başvurmadığını kontrol etmek için isPackage ve isSymbolicLink özelliklerini içerir.

Aşağıdaki kod kullanıcının masaüstü dizini üzerinden, paket olmayan alt dizinleri listeleyerek yinelenir:

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

Aşağıdaki kod kullanıcının masaüstü dizini üzerinden, sembolik bağlar olmayan dosyaları ve dizinleri listeleyerek yinelenir:

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

canonicalize() yöntemi, bağın başvurduğu dosyaya veya dizine işaret etmek için sembolik bir bağın yolunu değiştirir. Aşağıdaki kod kullanıcının masaüstü dizini üzerinden yinelenir ve sembolik bağlar olan dosyalar tarafından başvurulan yolları bildirir:

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

Bir birimdeki kullanılabilir alanı belirleme

Bir File nesnesinin spaceAvailable özelliği, Dosya konumunda bayt olarak kullanılabilir olan alandır. Örneğin aşağıdaki kod uygulama depolama dizininde kullanılabilir olan alanı kontrol eder:

trace(File.applicationStorageDirectory.spaceAvailable); 

File nesnesi bir dizine başvurursa, spaceAvailable özelliği, dizinde dosyaların kullanabileceği alanı gösterir. File nesnesi bir dosyaya başvurursa, spaceAvailable özelliği dosyanın büyütülebileceği alanı gösterir. Dosya konumu yoksa, spaceAvailable özelliği 0'a ayarlanır. File nesnesi sembolik bir bağa başvurursa, spaceAvailable özelliği sembolik bağın işaret ettiği konumdaki kullanılabilir alana ayarlanır.

Genellikle bir dizin veya dosya için kullanılabilir olan alan, dizini veya dosyayı içeren birimdeki kullanılabilir alanla aynıdır. Ancak kullanılabilir alan, kotaları ve dizin başına sınırlamaları hesaba katabilir.

Bir dosyayı veya dizini bir birime eklemek genellikle dosyanın gerçek boyutundan veya dizin içeriğinin boyutundan daha fazla alan gerektirir. Örneğin işletim sistemi dizin bilgilerini saklamak için daha fazla alan gerektirebilir. Veya gerekli disk kesimleri ek alan kullanabilir. Ayrıca kullanılabilir alanlar dinamik olarak değişir. Dolayısıyla bildirilen alanın tamamını dosya depolama için ayıramazsınız. Dosya sistemine yazma hakkında bilgi için bkz. Dosyaları okuma ve dosyalara yazma .

StorageVolumeInfo.getStorageVolumes() yöntemi monte edilmiş depolama birimleri hakkında daha ayrıntılı bilgi sağlar (bkz. Depolama birimleriyle çalışma ).

Varsayılan sistem uygulamasıyla dosya açma

AIR 2'de, işletim sisteminde dosyayı açmak için kayıtlı olan uygulamayı kullanarak bir dosyayı açabilirsiniz. Örneğin, AIR uygulaması bir DOC dosyasını onu açmak için kayıtlı olan uygulamayla açabilir. Dosyayı açmak için Dosya nesnesinin openWithDefaultApplication() yöntemini kullanın. Örneğin, aşağıdaki kodlar kullanıcının masaüstündeki test.doc isimli bir dosyayı DOC dosyalar için varsayılan uygulamayla açar:

var file:File = File.deskopDirectory; 
file = file.resolvePath("test.doc"); 
file.openWithDefaultApplication();
Not: Linux’ta bir dosyanın varsayılan uygulaması, dosya adı uzantısı ile değil, dosyanın MIME tipiyle belirlenir.

Aşağıdaki kod kullanıcının bir mp3 dosyasına gitmesini ve mp3 dosyaları için varsayılan uygulamayla dosyayı açmasını sağlar:

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

Uygulama dizinindeki dosyalar için openWithDefaultApplication() yöntemini kullanamazsınız.

AIR bazı dosyaları openWithDefaultApplication() yöntemiyle açmanızı engeller. Windows'ta AIR, EXE veya BAT gibi bazı dosya türlerini açmanızı engeller. Mac OS ve Linux’ta AIR, belirli bir uygulamada başlatılacak dosyaları açmanızı önler. (Bunlara Mac OS’taki Terminal ve AppletLauncher ve Linux’taki csh, bash veya ruby dahildir.) openWithDefaultApplication() yöntemini kullanarak bu dosyalardan birini açmaya çalışmak bir istisnayla sonuçlanır. Engellenen dosya türlerinin tam listesi için File.openWithDefaultApplication() yönteminin dil başvuru girişine bakın.

Not: Bu sınırlama yerel bir yükleyici (genişletilmiş bir masaüstü uygulaması) kullanılarak yüklenmiş AIR uygulaması için geçerli değildir.