Los siguientes ejemplos muestran cómo leer y escribir en un archivo de texto que contiene datos XML.
Para leer del archivo, inicialice los objetos File y FileStream, llame al método
readUTFBytes()
del objeto FileStream y convierta la cadena en objeto 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();
Asimismo, para escribir los datos en el archivo basta con configurar objetos File y FileStream apropiados y luego llamar a un método de escritura del objeto FileStream. Pase la versión en cadena de los datos XML al método de escritura, como en el código siguiente:
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();
En estos ejemplos se utilizan los métodos
readUTFBytes()
y
writeUTFBytes()
porque presuponen que los archivos están en formato UTF-8. En caso contrario, puede resultar necesario usar otro método (consulte
Formatos de datos y elección de los métodos de lectura y escritura
).
Los ejemplos anteriores utilizan objetos FileStream abiertos para una operación sincrónica. También se pueden abrir archivos para operaciones asíncronas (que dependen de las funciones de detección de eventos para responder a los eventos). Por ejemplo, el siguiente código muestra cómo leer un archivo XML de forma asíncrona:
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();
}
El método
processXMLData()
se invoca cuando se lee la totalidad del archivo para ponerlo en el búfer del lectura (cuando el objeto FileStream distribuye el evento
complete
). Llama al método
readUTFBytes()
para obtener una versión en cadena de los datos leídos, y crea un objeto XML,
prefsXML
, con base en esa cadena.
Para ver un ejemplo de aplicación que muestra estas capacidades, consulte
Reading and writing from an XML preferences file
(Lectura y escritura desde un archivo XML de preferencias, en inglés).