Senkronize olmayan bir şekilde açılan FileStream nesnesi tarafından oluşturulan olaylar ve senkronize olmayan programlama

Adobe AIR 1.0 ve üstü

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.