AIR Dosya Sistemi
27 Aralık 2007 – 22:57ADOBE AIR in bir nevi masaüstü yazılım olması, dosya sistemine müdahale etmesini tabi ki mümkün kılıyor. Bilgisayarınızdaki dosya sisteminde yeni klasörler oluşturabilir, bunları düzenleyebilir, kopyalayabilir, yeni dosyalar bile oluşturabilirisiniz. Tabi bu işlemler normal bir masaüstü yazılımı ile rahatlıkla yapılabilecek şeyler, ama web programcısı ile masaüstü programcısı iki farklı dal olduğundan dolayı, bunu masaüstü programlarda yapmak web programcısının pek işine gelmez.
Bu makalede AIR in dosya sınıfını hakkında birkaç ufak bilgi vereceğim. Normalde bu sınıfların tamamını anlatmak isterim ama AIR hala beta olduğundan ve sınıf yapılarının değişebilme ihtimali olduğundan dolayı kısaca anlatacağım. Bu arada başlamadan önce AIR BETA 3 ü indirip bilgisayarınıza kurmanızı tavsiye ederim.
Bildiğiniz gibi AIR cross platform çalışıyor yani hem Windows hem Mac OS.İlk başta biraz karmaşık gibi geliyor, çünkü Windows’ta
C:\Documents and Settings\eng\My Documents
olan klasörün yapısı Mac OS da tamamen farklı. Peki, bu sorunu nasıl çözebiliriz?
AIR içerisinde Windows ve Mac Os için iki işletim sisteminde de sağlıklı çalışacak dosya yolları ya da dizinler bulunmaktadır.Bu dizinler ve dosyalara File sınıfının “nativePath” özelliği ile ulaşabilirisiniz.
“nativePath”; işletim sistemindeki belirli klasörlerin tam adreslerini ulaşmasını sağlar.
Mesela;
“File.documentsDirectory” ile Windows işletim sisteminde ve Mac OS ta “Belgelerim” dizininin tam adresidir.
“nativePath” harici bir de url özelliği var. Ama her iki sistemde de (Windows, Mac Os) sorunsuz çalışmasını istiyorsanız nativePath kullanmanızı tavsiye ederim.
File.userDirectory
File.userDirectory metodu ile kullanıcın ana dizinine ulaşabilirsiniz.Windows üzerinde bu
C:\Documents and Settings\userName\My Documents
Mac OS üzerinde ise;
Users/userName
Aşağıdaki kod ile kullanıcının ana dizininde yeni bir klasör oluşturabilirsiniz;
-
import flash.filesystem.File;
-
var createDir:File = File.userDirectory.resolvePath("Stay Updated On Web");
-
createDir.createDirectory();
File.documentsDirectory
File.documentsDirectory metodu ile kullanıcın doküman dizinine ulaşabilirsiniz. Windows üzerinde bu
C:\Documents and Settings\userName\Belgelerim
Mac OS üzerinde ise;
Users/userName /Documents directory
Aşağıdaki kod ile kullanıcının ana dizininde yeni bir klasör oluşturabilirsiniz
-
var createDir:File = File.documentsDirectory.resolvePath("Stay Updated On Web");
-
createDir.createDirectory();
File.desktopDirectory
File.desktopDirectory metodu ile kullanıcın masaüstü dizinine ulaşabilirsiniz.
Aşağıdaki kod ile kullanıcının masaüstü dizinine yeni bir klasör oluşturabilirsiniz
-
var createDir:File = File. desktopDirectory.resolvePath("Stay Updated On Web");
-
createDir.createDirectory();
File.applicationStorageDirectory
File.applicationStorageDirectory metodu ile yaptığınız uygulamanın ana klasörünü ulaşabilirsiniz. Windows üzerinde bu
C:\Documents and Settings\eng\Application Data\ com.test.Create-Directory
Mac OS üzerinde ise;
/Users/babbage/Library/Preferences/com.test.Create-Directory
Aşağıdaki kod ile yapılan uygulamanın ana dizininizdeki “Local Store” dizininin içine yeni bir klasör oluşturabilirsiniz
-
var createDir:File = File.applicationStorageDirectory.resolvePath("Stay Updated On Web ");
-
createDir.createDirectory();
copyTo
Aşağıdaki örnek Belgelerim dizinindeki “Stay Updated On Web” klasörünün içindeki test metin belgesini aynı dizindeki “AIR Test” klasörüne kopyalıyor.
-
import flash.filesystem.*;
-
var sourceDir:File = File.documentsDirectory.resolvePath("Stay Updated On Web/test.txt");
-
var resultDir:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
-
sourceDir.copyTo(resultDir);
deleteDirectory
Aşağıdaki örnek Belgelerim dizinindeki “Stay Updated On Web” klasörünü tamamen siliyor.
-
var deleteDir:File = File.documentsDirectory.resolvePath("Stay Updated On Web");
-
deleteDir.deleteDirectory();
exist-open-readFile-close
Aşağıdaki örnek Belgelerim dizinindeki “Stay Updated On Web” klasörünün içindeki test metin belgesini önce olup olmadığını kontrol ediyoruz. Metin dosyası varsa eğer; metin dosyasını açıp okuduktan sonra metin dosyasını kapatıyoruz.
-
import flash.filesystem.*;
-
var TextFile:File = File.documentsDirectory.resolvePath("Stay Updated On Web/test.txt");
-
if (!TextFile.exists) {
-
var readFile:FileStream = new FileStream();
-
readFile.open(TextFile, FileMode.READ);
-
var textFile:String = new String(readFile.readUTFBytes(readFile.bytesAvailable));
-
readFile.close();
-
}
Şimdilik bu kadar, tekrar ; AIR şu anda Beta sürümünde olduğu için sınıfların tam tanımını yapmıyorum, aşğıdaki adresten sınıfların tamamına ulaşabilirsiniz.
http://livedocs.adobe.com/labs/air/1/aslr/index.html
Kolay Gelsin
Engin!

5 Responses to “AIR Dosya Sistemi”
yazin için teşekkürler.peki kullanıcıya dosya seçtirmek için ne yapmamız gerekiyor? şimdiden sağol.
By cem aydin on Ara 28, 2007
Cem aşağıdaki kod ile sistemden dosya seçebilirsin.Seçtiğin dosyanın ismini görmek sahneye instance name i “dir_txt” olan bir dinamik text dosyası eklemen gerekiyor.
Kolay gelsin
import flash.filesystem.*;
var directory:File = File.documentsDirectory;
directory.browseForDirectory(”Select Directory”);
directory.addEventListener(Event.SELECT, directorySelected);
function directorySelected(event:Event):void {
directory = event.target as File;
var files:Array = directory.getDirectoryListing();
for (var i:uint = 0; i < files.length; i++) {
dir_txt.text= files[i].name;
}
}
By Engin Yöyen on Ara 29, 2007
eline sağlık,sağolasın
By cem aydin on Ara 30, 2007
Benimde aklıme birşey takıldı,bildigim kadarıyla c# gibi bir dilde hazırlanan bir program mac ta çalışmıyor.peki bu cidden apollo da çözüldümü? yani klasör sistemleri içinde hata yapmadan çalışıyor mu?
By Mehmet Ali Güney on Oca 4, 2008
Aslında evet.Şu anda üzerinde çalıştığım bir projede yukarıdaki dosya sistemlerini kullandım, MacOS üzerinde deneme şansım olmadı ama windows ta sorunsuz çalışıyor.
Bunun MacOS ta sorunsuz çalışacağını tahmin ediyorum, sebebi ise Flash Player ya da ADOBE AIR, swf dosyalarını kendi içerisinde çözüyor.Yani dosyaları çalıştırırken işletim sistemine ihtiyaç duymuyor.
Bunu anlatmamın sebebi C# ın işletim sistemine ihtiyaç duyup duymadığını bilmiyorum.Ama Flash ya da AIR de böyle bir sorn söz konusu değil.
By Engin Yöyen on Oca 4, 2008