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
.