Asynchroon programmeren en de gebeurtenissen die worden gegenereerd door een FileStream-object dat asynchroon is geopend

Adobe AIR 1.0 of hoger

Als een bestand asynchroon is geopend (via de methode openAsync() ), wordt het lezen en schrijven van bestanden asynchroon uitgevoerd. Terwijl gegevens in de leesbuffer worden ingelezen en outputgegevens worden geschreven, kan andere ActionScript-code worden uitgevoerd.

Dat wil zeggen dat u moet registreren voor gebeurtenissen die worden gegenereerd door het FileStream-object dat asynchroon is geopend.

Door te registreren voor de gebeurtenis progress kunt u op de hoogte worden gebracht wanneer nieuwe gegevens beschikbaar worden voor lezen, zoals in de volgende code:

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"); 
} 

U kunt alle gegevens lezen door te registreren voor de gebeurtenis complete , zoals in de volgende code:

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"); 
} 

Net zoals inputgegevens worden gebufferd om asynchroon lezen mogelijk te maken, worden gegevens die u naar een asynchrone stroom schrijft, asynchroon gebufferd en naar het bestand geschreven. Terwijl gegevens naar een bestand worden geschreven, verzendt het FileStream-object periodiek een OutputProgressEvent -object. Een OutputProgressEvent -object bevat de eigenschap bytesPending , die is ingesteld op het aantal bytes dat nog moet worden geschreven. U kunt registreren dat u op de hoogte moet worden gebracht van de gebeurtenis outputProgress terwijl deze buffer naar het bestand wordt geschreven, bijvoorbeeld om een voortgangsdialoogvenster weer te geven. In het algemeen is dit echter niet noodzakelijk. U kunt met name de methode close() oproepen zonder dat u zich zorgen hoeft te maken over de ongeschreven bytes. Het FileStream-object blijft gegevens schrijven en de gebeurtenis close wordt gegenereerd nadat de laatste byte naar het bestand is geschreven en het onderliggende bestand is gesloten.