Ниже приводятся примеры чтения и записи в текстовый файл, содержащий XML-данные.
Для чтения инициализируйте объекты File и FileStream, вызовите метод
readUTFBytes()
объекта FileStream и преобразуйте строку в 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();
}
Метод
processXMLData()
вызывается после того, как файл полностью считан в буфер чтения, т. е. когда объект FileStream отправляет событие
complete
. Он вызывает метод
readUTFBytes()
для получения версии считываемых данных в виде строки и создает на основании этой строки XML-объект
prefsXML
.
Пример приложения, демонстрирующий эти возможности, см. в разделе «
Чтение и запись в XML-файл установок
».