Przykłady: wczytywanie pliku XML do obiektu XMLAdobe AIR 1.0 i wersje późniejsze Poniższe przykłady demonstrują sposób zapisu i odczytu pliku, który zawiera dane XML. W celu odczytania danych z pliku należy zainicjować obiekty File i FileStream, wywołać metodę readUTFBytes() obiektu FileStream, a następnie przekształcić ciąg znaków na obiekt 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();
I podobnie — w celu zapisania danych do pliku wystarczy skonfigurować odpowiednie obiekty File i FileStream, a następnie wywołać metodę write obiektu FileStream. Następnie należy przekazać dane XML w postaci ciągu znaków do metody write, jak w poniższym kodzie: 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();
W poniższych przykładach używane są metody readUTFBytes() i writeUTFBytes(), ponieważ założono, że pliki są w formacie UTF-8. Jeśli format jest inny, konieczne może być użycie innej metody (patrz Formaty danych oraz wybór metod odczytu i zapisu). W poniższych przykładach wykorzystano obiekty FileStream otwarte dla operacji synchronicznych. Możliwe jest również otwieranie plików dla operacji asynchronicznych (których odpowiedzi na zdarzenia są uzależnione od funkcji detektorów zdarzeń). Przykład: poniższy kod prezentuje sposób asynchronicznego wczytywania pliku 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();
}
Metoda processXMLData() jest wywoływana, gdy cały plik zostanie wczytany do buforu odczytu (gdy obiekt FileStream wywoła zdarzenie complete). W kodzie wywoływana jest metoda readUTFBytes() w celu uzyskania danych odczytywanych w wersji ciągu znaków, a następnie tworzony jest obiekt XML prefsXML na podstawie tego ciągu znaków. Przykładowa aplikacja, w której przedstawiono te funkcje, jest dostępna na stronie Odczyt i zapis z/do pliku preferencji XML. |
|