Gli esempi seguenti mostrano come leggere e scrivere in un file di testo contenente dati XML.
Per la lettura dal file, inizializzate gli oggetti File e FileStream, chiamate il metodo
readUTFBytes()
di FileStream e convertite la stringa in un oggetto XML:
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();
Analogamente la scrittura dei dati nel file è semplice come configurare appropriati oggetti File e FileStream e quindi chiamare un metodo di scrittura dell'oggetto FileStream. Passate la versione stringa dei dati XML al metodo di scrittura come nel codice seguente:
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();
Questi esempi utilizzano i metodi
readUTFBytes()
e
writeUTFBytes()
, perché ipotizzano che i file siano in formato UTF-8. In caso contrario, è possibile che sia necessario utilizzare un metodo differente (consultate
Formati di dati e selezione dei metodi di lettura e scrittura da utilizzare
).
Gli esempi precedenti utilizzano oggetti FileStream aperti per operazioni sincrone. È possibile inoltre aprire i file per operazioni asincrone (che fanno affidamento sulle funzione del listener di eventi per rispondere agli eventi). Ad esempio, il codice seguente mostra come leggere un file XML in modo asincrono:
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();
}
Il metodo
processXMLData()
viene invocato quando l'intero file viene letto nel buffer di lettura (quando l'oggetto FileStream invia l'evento
complete
). Chiama il metodo
readUTFBytes()
per recuperare una versione stringa dei dati di lettura e crea un oggetto XML,
prefsXML
, in base a tale stringa.
Per visionare un'applicazione d'esempio che mostra queste funzionalità, vedete
Reading and writing from an XML preferences file (Lettura e scrittura da un file di preferiti XML).