以下示例演示如何读取和写入包含 XML 数据的文本文件。
若要从文件读取,请初始化 File 和 FileStream 对象,调用 FileStream 的
readUTFBytes()
方法,然后将字符串转换为 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();
同样,将数据写入文件也很容易,比如设置适当的 File 和 FileStream 对象,然后调用 FileStream 对象的写入方法。将 XML 数据的字符串版本传递到写入方法,如以下代码中所示:
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();
这些示例使用
readUTFBytes()
和
writeUTFBytes()
方法,这是因为它们假定文件采用 UTF-8 格式。如果不是此格式,您可能需要使用其他方法(请参阅
数据格式以及选择要使用的读取和写入方法
)。
前面的示例使用为进行同步操作而打开的 FileStream 对象。您还可以打开文件进行异步操作(这依赖于事件侦听器函数以响应事件)。例如,以下代码演示如何以异步方式读取 XML 文件:
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();
}
在将整个文件读入到读取缓冲区时(当 FileStream 对象调度
complete
事件时),将调用
processXMLData()
方法。它调用
readUTFBytes()
方法以获取所读数据的字符串版本,然后它基于该字符串创建一个 XML 对象
prefsXML
。
要查看演示这些功能的示例应用程序,请参阅
从 XML 首选参数文件中读取和写入
。