Bir dosya senkronize olmayan bir şekilde açıldığında (
openAsync()
yöntemi kullanılarak), dosyaları okuma ve yazma işlemi senkronize olmayan bir şekilde gerçekleştirilir. Veriler okuma arabelleğine okunduğu ve çıktı verileri yazıldığı için, diğer ActionScript kodu çalıştırılabilir.
Bu, FileStream nesnesi tarafından oluşturulan senkronize olmayan bir şekilde açılan olaylar için kaydolmanız gerektiği anlamına gelir.
Aşağıdaki kodda olduğu gibi,
progress
olayı için kaydolduğunuzda yeni veriler okuma işlemi için kullanılabilir olduğunda size bilgi verilebilir:
var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.addEventListener(ProgressEvent.PROGRESS, progressHandler);
myFileStream.openAsync(myFile, FileMode.READ);
var str:String = "";
function progressHandler(event:ProgressEvent):void
{
str += myFileStream.readMultiByte(myFileStream.bytesAvailable, "iso-8859-1");
}
Aşağıdaki kodda olduğu gibi
complete
olayı için kaydolarak tüm verileri okuyabilirsiniz:
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");
}
Senkronize olmayan okuma işleminin gerçekleşmesi için giriş verilerinin arabelleğe alınma şekline oldukça benzer bir şekilde, senkronize olmayan bir akışa yazdığınız veriler arabelleğe alınır ve dosyaya senkronize olmayan bir şekilde yazılır. Veriler bir dosyaya yazıldıkça, FileStream nesnesi düzenli aralıklarla bir
OutputProgressEvent
nesnesi gönderir.
OutputProgressEvent
nesnesi, yazılmak için kalan bayt sayısına ayarlı bir
bytesPending
özelliği içerir. Belki de bir ilerleme iletişim kutusu görüntülemek için bu arabellek gerçekten bir dosyaya yazıldığı için,
outputProgress
olayı için bilgi almak üzere kaydolabilirsiniz. Ancak genelde bunu yapmanıza gerek yoktur. Özellikle, yazılmamış baytları dikkate almadan
close()
yöntemini çağırabilirsiniz. FileStream nesnesi veri yazmaya devam eder ve son bayt dosyaya yazıldıktan ve alttaki dosya kapatıldıktan sonra
close
olayı iletilir.