Пример: чтение XML-файла в XML-объектAdobe AIR 1.0 и более новых версий Ниже приводятся примеры чтения и записи в текстовый файл, содержащий 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-файл установок». |
|