Her dosya diskteki bir bayt kümesidir. ActionScript'te bir dosyadan gelen veriler her zaman bir ByteArray olarak temsil edilebilir. Örneğin aşağıdaki kod verileri bir dosyadan
bytes
adlı bir ByteArray nesnesine okur:
var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.addEventListener(Event.COMPLETE, completeHandler);
myFileStream.openAsync(myFile, FileMode.READ);
var bytes:ByteArray = new ByteArray();
function completeHandler(event:Event):void
{
myFileStream.readBytes(bytes, 0, myFileStream.bytesAvailable);
}
Benzer şekilde aşağıdaki kod verileri
bytes
adlı bir ByteArray nesnesinden bir dosyaya yazar:
var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.open(myFile, FileMode.WRITE);
myFileStream.writeBytes(bytes, 0, bytes.length);
Ancak genellikle verileri bir ActionScript ByteArray nesnesinde saklamak istemezsiniz. Genellikle veri dosyası belirtilen dosya biçimindedir.
Örneğin dosyadaki veriler metin dosyası biçiminde olabilir ve bu tür verileri bir String nesnesinde temsil etmek isteyebilirsiniz.
Bu nedenle FileStream sınıfı, ByteArray nesnelerinin dışındaki türlere ve türlerden yapılacak veri okuma ve yazma işlemleri için read ve write yöntemleri içerir. Örneğin
readMultiByte()
yöntemi sayesinde, aşağıdaki kodda olduğu gibi verileri bir dosyadan okuyup bir dizede saklayabilirsiniz:
var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.addEventListener(Event.COMPLETE, completed);
myFileStream.openAsync(myFile, FileMode.READ);
var str:String = "";
function completeHandler(event:Event):void
{
str = myFileStream.readMultiByte(myFileStream.bytesAvailable, "iso-8859-1");
}
readMultiByte()
yönteminin ikinci parametresi, ActionScript'in verileri yorumlamak için kullandığı metin biçimini belirtir (örnekte "iso-8859-1"). Adobe AIR yaygın kullanılan karakter seti kodlamalarını destekler (bkz.
Desteklenen karakter setleri
).
FileStream sınıfı ayrıca
readUTFBytes()
yöntemini de içerir, bu yöntem UTF-8 karakter kümesini kullanarak okuma arabelleğinden verileri bir dizeye okur. UTF-8 karakter kümesindeki karakterler çeşitli uzunluklarda olduğu için,
readUTFBytes()
öğesini
progress
olayına yanıt veren bir yöntemde kullanmayın, okuma arabelleğinin sonundaki veriler eksik bir karakteri temsil edebilir. (Bu ayrıca
readMultiByte()
yöntemini çeşitli uzunluklardaki karakter kodlamasıyla kullanırken de geçerlidir.) Bu nedenle FileStream nesnesi
complete
olayını gönderdiğinde veri kümesinin tamamını okuyun.
Ayrıca String nesneleriyle ve metin dosyalarıyla çalışmak için,
writeMultiByte()
ve
writeUTFBytes()
gibi benzer write yöntemleri de vardır.
readUTF()
ve
writeUTF()
yöntemleri de (
readUTFBytes()
ve
writeUTFBytes()
yöntemleriyle karıştırılmamalıdır) metin verilerini bir dosyaya okur ve yazar, ancak onlar metin verilerinden önce, metin verilerinin uzunluğunu belirten verilerin geldiğini varsayar, bu da standart metin dosyaları için yaygın bir uygulama değildir.
Bazı UTF kodlu metin dosyaları "UTF-BOM" (bayt sırası işareti) karakteriyle başlar, bu karakter kodlama biçiminin yanı sıra endian olduğunu belirtir ( UTF-16 veya UTF-32 gibi).
Bir dosyaya okuma ve yazma örneği için bkz.
Örnek: Bir XML dosyasını XML nesnesine okuma
.
readObject()
ve
writeObject()
, karmaşık ActionScript nesneleri için veri saklamak ve almak için pratik yollardır. Veriler AMF'de kodlanmıştır (ActionScript Message Format). Adobe AIR, Flash Player, Flash Media Server, ve Flex Data Hizmetleri bu biçimde veriyle çalışmaya yarayan API'ler içerir.
Başka read ve write yöntemleri (
readDouble()
ve
writeDouble()
gibi) vardır. Ancak bunları kullanırsanız, dosya biçiminin bu yöntemler tarafından tanımlanan verilerin biçimleriyle eşleştiğinden emin olun.
Dosya biçimleri genellikle basit metin biçimlerinden daha karmaşıktır. Örneğin bir MP3 dosyası, yalnızca belirli MP3 dosyalarına özgü olan açma ve kod çözme algoritmalarıyla yorumlanabilen sıkıştırılmış veriler içerir. MP3 dosyaları da dosya hakkında meta etiket bilgilerine (bir şarkının başlığı ve sanatçı gibi) sahip ID3 etiketleri içerebilir. ID3 biçiminin birden çok sürümü vardır, ancak bunlardan en basiti (ID3 sürüm 1)
Örnek: Rastgele erişimle veri okuma ve yazma
bölümünde anlatılmaktadır.
Diğer dosya biçimleri (görüntüler, veri tabanları, uygulama belgeleri, vb.) farklı yapılara sahiptir ve ActionScript'te onların verileriyle çalışmak için, verilerin nasıl yapılandırıldığını anlamanız gerekir.