I följande exempel visas hur du läser och skriver till en textfil som innehåller XML-data.
Om du vill läsa från filen initierar du File- och FileStream-objekten, anropar metoden
readUTFBytes()
för FileStream och konverterar strängen till ett XML-objekt:
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();
Att skriva data till filen är lika enkelt som att ställa in rätt File- och FileStream-objekt och sedan anropa en write-metod för FileStream-objektet. Skicka strängversionen för XML-data till write-metoden så som i följande kod:
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();
Dessa exempel använder metoderna
readUTFBytes()
och
writeUTFBytes()
, eftersom de förutsätter att filerna är i UTF-8-format. Om så inte är fallet, kanske du måste använda en annan metod (se
Dataformat och att välja read- eller write-metod
).
I föregående exempel används FileStream-objekt som öppnats för synkrona åtgärder. Du kan också öppna filer för asynkrona åtgärder (som använder händelseavlyssnare för att svara på händelser). Följande kod visar hur du läser en XML-fil asynkront:
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();
}
Metoden
processXMLData()
anropas när hela filen läses till läsbufferten (när FileStream-objektet skickar händelsen
complete
). Den anropar metoden
readUTFBytes()
för att hämta en strängversion av läsdata, och skapar ett XML-objekt,
prefsXML
, baserat på den strängen.
Ett exempelprogram som visar dessa funktioner finns i
Läsa och skriva från en XML-inställningsfil.