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-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.
|
|
|