In de volgende voorbeelden ziet u hoe u kunt lezen van en schrijven naar een tekstbestand dat XML-gegevens bevat.
Om te lezen van het bestand, initialiseert u de File- en FileStream-objecten, roept u de methode
readUTFBytes()
van het FileStream-object op en converteert u de tekenreeks naar een XML-object:
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var prefsXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
Om de gegevens naar het bestand te schrijven, hoeft u alleen maar de correcte File- en FileStream-objecten in te stellen en vervolgens een schrijfmethode van het FileStream-object op te roepen. Geef de tekenreeksversie van de XML-gegevens door aan de schrijfmethode zoals in de volgende code:
var prefsXML:XML = <prefs><autoSave>true</autoSave></prefs>;
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
fileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
var outputString:String = '<?xml version="1.0" encoding="utf-8"?>\n';
outputString += prefsXML.toXMLString();
fileStream.writeUTFBytes(outputString);
fileStream.close();
Bij deze voorbeelden wordt gebruikgemaakt van de methoden
readUTFBytes()
en
writeUTFBytes()
, omdat er bij deze methoden van wordt uitgegaan dat de bestanden de UTF-8-indeling hebben. Als dat niet het geval is, moet u mogelijk een andere methode gebruiken (zie
Gegevensindelingen, en de methode voor lezen en schrijven kiezen
).
Bij de voorgaande voorbeelden worden FileStream-objecten gebruikt die zijn geopend voor synchrone bewerkingen. U kunt ook bestanden openen voor asynchrone bewerkingen (die gebruikmaken van gebeurtenislistenerfuncties om te reageren op gebeurtenissen). In de volgende voorbeeldcode ziet u hoe u een XML-bestand asynchroon kunt lezen:
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream:FileStream = new FileStream();
fileStream.addEventListener(Event.COMPLETE, processXMLData);
fileStream.openAsync(file, FileMode.READ);
var prefsXML:XML;
function processXMLData(event:Event):void
{
prefsXML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
}
De methode
processXMLData()
wordt opgeroepen wanneer het gehele bestand in de leesbuffer is ingelezen (wanneer het FileStream-object de gebeurtenis
complete
verzendt). Deze roept de methode
readUTFBytes()
op om een tekenreeksversie van de leesgegevens te verkrijgen en maakt op basis van die tekenreeks het XML-object
prefsXML
.
Een voorbeeldtoepassing waarin deze mogelijkheden worden getoond, vindt u in
Lezen van en schrijven naar een XML-voorkeurenbestand
.