Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
vhe74

Le carnet web de Vincent

XML preferences files

Le sujet du jour va être de quelle manière on peut utiliser les facultés de Adobe AIR à accéder au système de fichiers pour réaliser des fichiers de préférences pour une application.Le contexte va être le suivant, on va charger un fichier dans un objet de type XML, et ensuite il n'y plus qu'à aller chercher les variables dans cet objet. Pour ce qui est du sens inverse c'est tout aussi simple, on met à jour les variables et on enregistre le tout dans un fichier XML.Commençons par quelques déclarations :

import flash.filesystem.*; //pour disposer des classes d'acc??s aux filesystemspublic var prefsFile:File; //Le fichier dans lequel r??sident les pr??f??rencespublic var prefsXML:XML; //L'objet XML dans lequel on va mettre nos datapublic var stream:FileStream; //le flux qui sera utilis?? pour lire/??crire dans le fichier

Ensuite, codons la fonction de lecture qui va voir comme faculté de créer le fichier si il n'existe pas. cette fonction doit être obligatoirement être appelée lors du cycle d'initialisation de  l'application. le fchier est placé dans le répertoire de stockage de l'application, ce qui permet de gérer facilement le portage entre les différents environnements.

private function lireprefs():void {
prefsFile = File.applicationStorageDirectory;prefsFile = prefsFile.resolvePath("fichierpreference.xml");stream = new FileStream();if (prefsFile.exists) {
stream.open(prefsFile, FileMode.READ);prefsXML = XML(stream.readUTFBytes(stream.bytesAvailable));stream.close()}

bon voilà tout va bien le fichier existe, donc pas de soucis, on le lit via le stream pour instancier la variable prefsXML, et le tour est joué. Là ou ça peut se compliquer c'est lorsque le fichier existe pas encore, et qu'il faut le créer au préalable. On positionne donc un else sur la condition précédemment utilisée et on gère cette situation. Dans ce cas on instancie la variable XML depuis une chaîne de texte, et on déclare chacun des noeuds à la suite les un des autres avec leur valeur par défaut :

prefsXML = new XML("<preferences/>");prefsXML.prenom = "votre prenom";prefsXML.nom = "votre nom";

Ensuite il faut créer le fichier depuis une chaîne de texte et y injecter le contenu de la structure, puis l'enregistrer sur le disque...

var outputString:String = '\n' + prefsXML.toXMLString();;outputString = outputString.replace(/\n/g, File.lineEnding);stream = new FileStream();stream.open(prefsFile, FileMode.WRITE);stream.writeUTFBytes(outputString);stream.close();

C'est ce même bout de code qui sera utilisé lorsqu'il s'agira de sauvegarder le fichier de préférences par exemple lorsqu'on sortira de l'application.Une fois qu'on a fait tout ça l'application peut continuer sa petite vie tranquille et on utilisera les variables de préférences tout simplement  :

label.text = prefsXML.prenom ;

Voila finalement c'était pas si compliqué, et ça peut dépanner dans bien des situations...

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
O
This is a test...
Répondre