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.