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(„
// 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]
Hier hätte ich mal die Frage, kann man die XML Datei nicht im Ordner speichern wo die Applikation installiert ist?
achja noch ne kleine verbesserung: File.applicationStorageDirectory.resolvePath(„Einstellungen.xml“);
damit versuch ich es zu speichern klappt aber net.
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.
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?
Vielleicht gibt es auch Probleme mit dem Dateipfad (z.B. Umlaute, Leerzeichen, etc.). Vielleicht mal mit was einfachem versuchen (z.B. c:\test).
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 :(