När en fil öppnas asynkront (med metoden
openAsync()
) läses och skrivs filer asynkront. Allt eftersom data läses till läsbufferten och utdata skrivs, kan annan ActionScript-kod köras.
Det innebär att du måste registrera händelser som genereras av FileStream-objektet som har öppnats asynkront.
Genom att registrera
progress
-händelsen kan du bli meddelad när nya data blir tillgängliga för läsning, som i koden nedan:
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");
}
Du kan läsa alla data genom att registrera
complete
-händelsen, som i koden nedan:
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");
}
På ungefär samma sätt som indata buffertlagras för att möjliggöra asynkron läsning, buffertlagras data som du skriver i en asynkron ström och de skrivs till filen asynkront. Allt eftersom data skrivs till en fil skickar FileStream-objektet regelbundet ett
OutputProgressEvent
-objekt. Ett
OutputProgressEvent
-objekt omfattar en
bytesPending
-egenskap som ställs in på antalet byte som finns kvar att skriva. Du kan registrera
outputProgress
-händelsen om du vill bli meddelad när bufferten verkligen skrivs till filen, kanske om du vill visa en förloppsdialogruta. I allmänhet behöver du emellertid inte göra detta. Du kan anropa metoden
close()
utan att behöva bekymra dig om byte som inte skrivs. FileStream-objektet fortsätter att skriva data och
close
-händelsen levereras efter att den sista byten har skrivits till filen och den underliggande filen stängs.