AIR: Konfigurationsdatei im XML-Format schreiben und lesen

Adobe AIR - Reading Writing xml

Die File-Klasse erweitert die FileReference-Klasse um Funktionen, die im Flash Player aus Sicherheitsgründen nicht erlaubt sind. Zu den Funktionen gehören:

  • Dateien und Verzeichnisse kopieren und verschieben
  • Dateien und Verzeichnisse löschen oder in den Papierkorb verschieben
  • Auflisten der Dateien und Verzeichnisse in einem Ordner
  • Temporäre Dateien und Ordner erstellen

Dieses AIR-Beispiel verdeutlicht, wie man eine Datei schreibt und liest. Es wird eine kleine Konfigurations-Datei erstellt, die einen Wert (Jahreszahl) im XML-Format abspeichern kann.

Beim Starten des Programm wird versucht, die Konfigurationsdatei zu öffnen. Existiert diese Datei nicht, wird sie mit dem Defaultwert „1980“ im „Dokumentenverzeichnis“ des Nutzers angelegt. Ist die Datei vorhanden, wird der Wert darin ausgelesen und angezeigt.

Beim nächsten Starten des Programm sieht man, dass der zuletzt gespeicherte Werte zu sehen ist.

[as]
import flash.filesystem.*;
import flash.events.*;

var myXML:XML;

// Datei definieren
var file:File = File.documentsDirectory.resolvePath(„myAppConfig.xml“);

// neuer Filestream
var fileStream:FileStream = new FileStream();

try {

// filestream öffnen zum lesen
fileStream.open(file, FileMode.READ);

// neues XML Element
myXML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));

// filestream schließen
fileStream.close();

}

catch(e:Error) {

// default config generieren
myXML = new XML(„1980„);

// default config schreiben lassen
writeConfig(myXML.toXMLString());
}

function writeConfig(content:String):void {

// hinweistext ausgeben
myText.text = „Schreibe Config-File: \n“ + file.nativePath;

// filestream öffnen zum schreiben
fileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);

// xml header
var outputString:String = ‚\n‘;

// inhalt anhängen
outputString += content;

// filestream schreiben
fileStream.writeUTFBytes(outputString);

// filestream schließen
fileStream.close();

}

// Wert anzeigen
myNumStepper.value = Number ( myXML..year.text() );

// event listener für save button
mySaveButton.addEventListener(MouseEvent.CLICK, mySaveButton_CLICK);

function mySaveButton_CLICK(e:MouseEvent):void {

// wert im XML ablegen
myXML..year = myNumStepper.value;

writeConfig(myXML.toXMLString());

}
[/as]

Für den Download benötigt man Flash CS3 und die Adobe AIR Erweiterung.

Link: Quelldatei (.fla)

[ad]

7 Gedanken zu „AIR: Konfigurationsdatei im XML-Format schreiben und lesen“

  1. Hier hätte ich mal die Frage, kann man die XML Datei nicht im Ordner speichern wo die Applikation installiert ist?

  2. achja noch ne kleine verbesserung: File.applicationStorageDirectory.resolvePath(„Einstellungen.xml“);
    damit versuch ich es zu speichern klappt aber net.

  3. Was klappt denn nicht bzw. was ist die Fehlermeldung?

    Generell gibt es diese Standardverzeichnisse:

    File.applicationDirectory
    The folder containing the application’s installed files.

    File.applicationStorageDirectory
    The application’s private storage directory.

    File.desktopDirectory
    The user’s desktop directory.

    File.documentsDirectory
    The user’s documents directory.

    File.userDirectory
    The user’s directory.

  4. ja komischerweise gibt es keine Fehlermeldung. Die Einstellungen.xml wird anscheinend kurzzeitig erstellt… aber ich weiß nicht wooo. Wenn ich mit Windows Suche mache, findet er die Datei nicht. Also das einzige was klappt ist auf dem Desktop speichern. Also der Filmbleibt nicht stehen oder so. Bloß existiert die datei auch nirgends. Gibts irgendwelche Sicherheitsrichtslinien die ich nicht beachtet habe?

  5. Vielleicht gibt es auch Probleme mit dem Dateipfad (z.B. Umlaute, Leerzeichen, etc.). Vielleicht mal mit was einfachem versuchen (z.B. c:\test).

  6. Also hab da vllt irgendwo einen fehler gehabt und etwas warscheinlich (? ) falsch verstanden

    Was klappt denn nicht bzw. was ist die Fehlermeldung?

    Generell gibt es diese Standardverzeichnisse:

    File.applicationDirectory
    The folder containing the application’s installed files.
    –> ist komischerweise eine Stufe unter Eigene Dateien
    C:/Dokumente…/User/

    File.applicationStorageDirectory
    The application’s private storage directory.
    selbe Stufe jedoch noch iin dem Ordner Anwendungsdateien

    File.desktopDirectory
    The user’s desktop directory.
    Das klappt soweit

    File.documentsDirectory
    The user’s documents directory.
    hier hatte ich wohl ein Fehler,.. ist dann in Eigene Dateien

    File.userDirectory
    The user’s directory.
    ist eine Ebene über Eigene Dateien

    ALso irgendwie kein bisschen unterschied zwischen den Speicherorten. Ich wollte eigentlich in den Ordner wo alles Installiert ist… geht aber nicht :(

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert