Lorsqu’un fichier est ouvert en mode asynchrone (à l’aide de la méthode
openAsync()
), la lecture et l’écriture de fichiers sont asynchrones. Un autre code ActionScript peut s’exécuter au fur et à mesure de l’insertion de données dans la mémoire tampon de lecture et de l’écriture de données de sortie.
Vous devez donc vous enregistrer pour les événements générés par l’objet FileStream ouvert en mode asynchrone.
En vous enregistrant pour l’événement
progress
, vous pouvez être averti dès que de nouvelles données sont disponibles à des fins de lecture, comme l’illustre le code suivant :
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");
}
Vous pouvez lire la totalité des données en vous enregistrant pour l’événement
complete
, comme l’illustre le code suivant :
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");
}
De même que des données en entrée sont mises en mémoire tampon à des fins de lecture asynchrone, les données que vous écrivez dans un flux asynchrone sont mises en mémoire tampon et écrites dans le fichier de manière asynchrone. Alors que des données sont écrites dans un fichier, l’objet FileStream distribue régulièrement un objet
OutputProgressEvent
. Un objet
OutputProgressEvent
comprend une propriété
bytesPending
définie sur le nombre d’octets restants à écrire. Vous pouvez vous enregistrer pour l’événement
outputProgress
afin d’être averti lorsque cette mémoire tampon est écrite dans le fichier, peut-être pour afficher une boîte de dialogue de progression. Toutefois, cette opération n’est généralement pas nécessaire. Vous pouvez notamment appeler la méthode
close()
sans vous soucier des octets non écrits. L’objet FileStream continue d’écrire des données et l’événement
close
est envoyé une fois le dernier octet écrit dans le fichier et le fichier sous-jacent fermé.