Mit Adobe AIR ist es möglich direkt auf das Filesystem des User zuzugreifen.
Es können also Dateien geladen und sogar gespeichert werden.
Dies ermöglicht es einfache Programme wie einen Texteditor in Adobe AIR zu entwickeln.
Inhalt
Adobe AIR bietet insgesammt 3 Klassen an um mit Dateien zu arbeiten.
Hiermit können Dateien kopiert, verschoben, gelöscht, gelesen und geschrieben werden.
| Klasse | Beschreibung | ||
|---|---|---|---|
| File | Erzeugt ein Object welches sich auf eine Datei oder ein Verzeichniss bezieht. | ||
| FileMode | Hiermit wird festgelegt ob auf die Daten schreiben, lesen, anfügend oder löschend zugegriffen werden kann. | ||
| FileStream | Dieses Object wird verwenden um Dateien zu lesen oder zu speichern. | ||
Es gibt einige Methoden auf die synchron oder sowohl asynchron zugegriffen werden kann.
Der Unterschied zwischen sychron und asychron kann kurz wie folgt zusammen fassen.
Bei asychron wird der Prozess im Hintergrund gestartet und sobald dieser beendet ist wird ein entsprechender Event Listener angesprochen.
Es können z.B: Daten im Hintergrund geladen werden und bis diese verfügbar sind macht die Flashdatei was anderes.
Ganz anders wie beim sychron Modus, hier wird gewartet bis die Daten geladen oder geschrieben sind und erst dann kann die Flashdatei weiter machen.
Auch werden solange evt. Animationen von der Flashdatei angehalten bis Adobe AIR die Daten komplett geladen hat.
Im normal Fall sollte man die sychron Version verwenden, da diese einfacher ist und man nicht eine Menge von Event Listener erzeugen muss.
Sollte es jedoch nötig sein mehrere Dateien gleichzeitig zu laden und zu schreiben so sollte man die asychrone Version verwenden.
| Synchron | Asychron | ||
|---|---|---|---|
| File.copyTo() | File.copyToAsync() | ||
| File.deleteDirectory() | File.deleteDirectoryAsync() | ||
| File.deleteFile() | File.deleteFileAsync() | ||
| File.getDirectoryListing() | File.getDirectoryListingAsync() | ||
| File.moveTo() | File.moveToAsync() | ||
| File.moveToTrash() | File.moveToTrashAsync() | ||
| open() | openAsync() | ||
Um Dateien lesen oder schreiben zu können benötigt Adobe AIR natürlich die Angabe, wo diese geladen oder geschrieben werden sollen.
Hierfür stellt Adobe AIR bereits ein paar vordefinierte Pathe bereit, wie der Path zum Desktop, Eigenen Dateien oder zum Userverzeichniss des Benutzers.
Jedes Path Object hat in der Regel die folgenden Eigenschaften.
| Eigenschaft | Beschreibung | ||
|---|---|---|---|
| nativePath |
Definiert den platform abhängigen Path zur Datei oder dem Verzeichnis. Ein Beispiel für Windows wäre "C:\Sample directory\test.txt", das selbe Beispiel für MAC wäre "/Sample directory/test.txt". Es werden also je nach Betriebssystem / oder \ benötigt. |
||
| URL |
Benutzt das URL schema und den Path einer Datei anzugeben. Windows: "file:///c:/Sample%20directory/test.txt" Mac: "file:///Sample%20directory/test.txt" Es wird hier auch "app:/text.txt" und "app-storage:/settings/config.xml" unterstützt. |
||
Es gibt mehrer Möglichkeiten das Path Object auf eine Datei oder ein Verzeichniss zu zeigen lassen.
User Home Verzeichnis
Hiermit kann man Dateien im User Home Verzeichnis des Benutzers ansprechen. Unter Windows ist dies das Verzeichnis "C:\Documents and Settings\userName\", beim MAC dagegen "Users/userName".
import flash.filesystem.*;
var loadFile:File = File.userDirectory.resolvePath("text.txt");
Der Path würde dann für den Benutzer "dummy" z.B: so aussehen "C:\Documents and Settings\dummy\text.txt".
User Dokumenten Verzeichnis
Hiermit kann man auf Dateien im User Dokument Verzeichnis des Benutzers zugreifen. Unter Windows ist dies das Verzeichnis "C:\Documents and Settings\userName\My Documents", beim MAC dagegen "Users/userName/Documents".
import flash.filesystem.*;
var loadFile:File = File.documentsDirectory.resolvePath("text.txt");
Der Path würde dann für den Benutzer "dummy" z.B: so aussehen "C:\Documents and Settings\dummy\My Documents\text.txt".
User Desktop Verzeichnis
Hiermit kann man auf Dateien die auf den Desktop sind zugreifen.
import flash.filesystem.*;
var loadFile:File = File.desktopDirectory.resolvePath("text.txt");
Der Path würde dann für den Benutzer "dummy" z.B: so aussehen "C:\Documents and Settings\dummy\Desktop\text.txt".
Programm Daten Verzeichnis
Jedes Programm besitzt sein eigenes Daten Verzeichnis, wo speziele Daten hinterlegt werden können.
Diese Verzeichnis ist nur für den Benutzer zugänglich der aktuell dieses Programm benutzt.
Hiermit sollten also Einstellungen und speziele Datein angesprochen werden die per Programm und User gespeichert werden.
Im normal Fall sieht der User die hier gespeicherten Daten auch nicht da diese von Windows ausgeblendet werden.
Der User kann diese aber natürlich auch einblenden lassen und sich diese Daten ansehen.
Mac Path:
/Users/user name/Library/Preferences/applicationID.publisherID/Local Store/
Windows Path:
C:/Documents and Settings/user name/Application Data/applicationID.publisherID/Local Store/
import flash.filesystem.*;
var loadFile:File = File.applicationStorageDirectory.resolvePath("text.txt");
Der Path würde dann für den Benutzer "dummy" z.B: so aussehen "C:\Documents and Settings\dummy\Application Data\de.area-network.flash.example.Air-File-System\Local Store\text.txt".
Program Verzeichnis
Das Program Verzeichnis ist jenes Verzeichnis in welchen das entsprechende Programm installiert wurde bzw. von welchen Verzeichnis es aus gestartet wird.
Dieses Verzeichnis ist unabhängig von dem User, somit sollten hier allgemein Daten verarbeitet werden wie Bilder oder Hilfedateien.
import flash.filesystem.*;
var loadFile:File = File.applicationDirectory.resolvePath("text.txt");
Das diese Verzeichnis unabhängig vom User ist könnte diese so aussehen "C:\Programme\MyfirstFlashAir\text.txt".
Dateisystem / Root
Hiermit werden alle Hauptverzeichnisse des System als Array zurück gegeben.
Bei Windows ist dies meist "C:","D:","E:"... beim MAC bzw. Linux ist dies immer nur root "/".
import flash.filesystem.*;
var localDirectories:Array = File.getRootDirectories();
Das Array localDirectories könnte folgende Werte unter Windows enthalten:
["C:\","D:\","E:\"]
Um den Path eines der Object im Array zu erhalten kann man localDirectories[0].nativePath verwenden.
Dateiauswahlfenster
Es ist auch mögich den Benutzer ein Fenster öffnen zu lassen wo er die gewünschte Datei suchen und auswählen kann.
Diese sollte vor allem dann verwendet werden wenn der Userm so einfach wie möglich, eine Datei auswählen soll.
| Function | Beschreibung | ||
|---|---|---|---|
browseForOpen() | Hier wird der User aufgefordert eine Datei zum Laden auszuwählen. Es wird einen Button "Open" oder "Öffnen" als Bestättigung angezeigt. | ||
browseForSave() | Hier wird der User aufgefordert eine Datei zum Speichern auszuwählen oder zu anzugeben. Es wird ein Button "Save" oder "Speichern" anstatt "Open" oder "Öffnen" angezeigt. | ||
browseForOpenMultiple() | Hier kann der Benutzer mehrere Dateien zum lesen auswählen, diese werden dann als Array zurück gegeben. | ||
Das nachfolgende Beispiel zeigt dem Benutzer eine Dateiauswahlbox, wo er eine Datei auswählen kann.
Abhängig von der oben verwendeten Function sieht diese je nach Function anders aus.
import flash.filesystem.*;
var chooseFile:File = File.documentsDirectory;
chooseFile.browseForOpen("Bitte Datei auswählen");
// Event Listener wenn eine Datei ausgewählt wurde
chooseFile.addEventListener(Event.SELECT, function() {
...
txt.text = chooseFile.nativePath;
...
});
// Event Listener falls der Benutzer auf "Cancel" oder "Abbrechen" klickt
chooseFile.addEventListener(Event.CANCEL, function() {
...
txt.text = 'Benutzer hat abgebrochen';
...
});
Es werden auserdem 2 Event Listener definiert, welche ausgeführt werden wenn der Benutzer eine Datei auswählt oder auch Abbrechen klickt.
Das Ergebniss wird in eine Textarea mit den namen "txt" geschrieben.
Es ist natürlich auch möglich das öffnen der Datei als Event zu definieren z.B: wenn der Benutzer auf einen bestimmten Button klickt.
Adobe AIR bietet auch Möglichkeiten an um Verzeichnisse zu erstellen, auszulesen, löschen und sogar zu kopieren.
| Function | Beschreibung | ||
|---|---|---|---|
createDirectory() | Erstellt ein Verzeichnis, falls dieses nicht vorhanden ist. | ||
createTempDirectory() | Erstellt ein Temporäres eindeutiges Verzeichnis. Diese Verzeichnis wird nicht automatisch gelöscht und sollte beim beenden des Programms gelöscht oder geleert werden. | ||
getDirectoryListing() | Gibt alle Dateien des ausgewählen Verzeichnis in einem Array zurück. | ||
copyTo(Ziel) | Kopiert oder verschiebt das Quellverzeichnis. Standartmässig werden keine Dateien überschrieben. | ||
deleteDirectory() | Löscht das oder die angebenenen Verzeichnisse. Standartmässig werden nicht leere Verzeichnisse nicht gelöscht. | ||
Wie an den Function zu sehen ist kann man so gut wie alles mit Adobe AIR machen was auch unter einem Betriebssystem möglich ist.
Kommen wir aber nun zu den einzelnen Functionen und wie diese verwendet werden sollten.
Verzeichnis erstellen
Mit createDirectory() kann ein entsprechendes Verzeichnis erstellt werden. Sollte diese Verzeichnis schon vorhanden sein, macht Adobe AIR nichts.
Teilweise werden auch je nach Schreibmodus fehlende Verzeichnisse automatisch erstellt, dazu kommen wir aber später.
import flash.filesystem.*;
var directory:File = File.documentsDirectory;
directory.resolvePath("Adobe AIR Test").createDirectory();
Dieses Beispiel erzeugt im Documents Verzeichnis einen Ordner mit den Namen "Adobe AIR Test" natürlich kann man dies auch in einer Zeile machen.
Jedoch Anfänger sollte immer zuerst die normale Schreibweise verwenden.
Temporäres Verzeichnis erstellen
In einigen Fällen ist es nötig ein temporäres Verzeichnis zu erzeugen, dies ist auch realtiv einfach möglich.
So ein Verzeichnis wird meist dafür verwendet Ergebnisse oder Berechnung zwischen zu speichern damit diese nicht den Arbeitsspeicher beeinflussen.
Beim beenden eines Adobe AIR Programm wird dieses Verzeichnis nicht automatisch geleert oder gelöscht.
Es sollte also darauf geachtet werden temporäre Dateien die nicht mehr benötigt werden beim beenden des Programms zu löschen.
import flash.filesystem.*;
var temp:File = File.createTempDirectory();
Dieses Beispiel erzeugt ein temporäres Verzeichnis welches über temp oder aber auch temp.nativPath angesprochen werden.
In den meisten Fällen werden diese temporäre Verzeichnisse gelöscht wenn der User zu weniger Festplattenspeicher zu verfügung hat.
Aus diesem Grund sollten hier keine wichtigen Daten gespeichert werdet.
Verzeichniss auslesen
Verzeichnisse auslesen ist auch unter Adobe AIR möglich, es gibt sogar hierzu auch einen Event Handler der angesprochen wird sobald das Verzeichnis ausgelesen worden ist.
Das Ergeniss wird als Array zurück gegeben und enthält sowohl Dateien auch als Verzeichnisse.
import flash.filesystem.*;
var files:File = File.documentsDirectory;
var contents:Array = files.getDirectoryListing();
var i:Number;
for (i = 0; i < contents.length; i++)
{
txt.text += '[' + contents[i].type + '] ' + contents[i].name + ' (Size: ' + contents[i].size + ' Verzeichnis:' + contents[i].isDirectory + ')\n';
}
Dieses Beispiel schreibt alle Dateien und Verzeichnisse from Dokumenten Verzeichnis in die Textarea mit den Namen "txt".
Die Eigenschaft .isDirectory liefert je nach Typ true oder false zurück, somit kann man hiermit einer Unterscheidung machen ob es sich um ein Verzeichniss oder eine Datei handelt.
Verzeichnisse verschieben und kopieren
Es ist zwar relativ selten nötig Verzeichnisse zu kopieren oder zu verschieben aber auch dies ist mit Adobe AIR ohne Probleme möglich.
Zum kopieren wird copyTo verwendent, zum verschieben von Dateien wird moveTo verwendet.
Achtung:
Wenn der overwrite Parameter auf "true" gesetzt wird, wird das Zielverzeichnis komplet gelöscht und erst dann wird das neue Verzeichnis kopiert/verschoben. Es werden also nicht nur vorhandene Dateien überschrieben !
import flash.filesystem.*;
import flash.filesystem.*;
var quelle:File = File.createTempDirectory();
quelle.resolvePath("Test 1").createDirectory();
quelle.resolvePath("Test 2").createDirectory();
quelle.resolvePath("Test 3").createDirectory();
var ziel:File = File.documentsDirectory.resolvePath("AIR Copy Test");
quelle.copyTo(ziel);
Dieses Beispiel erzeugt einen temporären Ordner und darin 3 Verzeichnisse (Test 1, Test 2, Test 3) anschließend wird dieses Verzeichnis in das Dokumenten Verzeichnis kopiert.
Bitte darauf achten wenn dies mehrmals getestet wird vorher immer den "AIR Copy Test" Ordner löschen.
Verzeichnisse löschen
Wie schon erwähnt werden temporäre Verzeichnisse im Normalfall nicht automatisch gelöscht aus diesem Grund ist es nötig, diese manuel zu löschen sobald diese nicht mehr benötigt werde.
Jedoch sollte man immer darauf achten was man löscht und Sachen lieber 2 mal prüfen als aus versehen ein wichtiges Verzeichnis gelöscht zu haben.
import flash.filesystem.*;
var tempDir:File = File.createTempDirectory();
var delDir:File = tempDir;
delDir.addEventListener(Event.COMPLETE, function() {
txt.text='Verzeichnis gelöscht';
});
delDir.deleteDirectoryAsync(true);
Dieses Beispeil erzeugt ein temporäres Verzeichnis und löscht dieses anschließend wieder.
Damit wir sehen ob dies erfolgreich war verwenden wir die "Async" Version.
Der Parameter der übergeben werden kann, in diesem Beispiel true, gibt an ob auch ein nicht leeres Verzeichnis gelöscht werden soll.
Wenn der Parameter den Standartwert false hat, werden nur leere Verzeichnisse gelöscht.
Das Arbeiten mit Dateien ist ähnlich wie das Arbeiten mit Verzeichnisse.
Damit diese Dokumentation jedoch vollständig ist werden hier die einzelnen Möglichkeiten genauer erklärt.
Kopieren und verschieben von Dateien
Wie auch schon bei den Verzeichnissen kann mit copyTo und moveTo eine entsprechende Datei kopiert oder verschoben werden.
import flash.filesystem.*;
var quelle:File = File.createTempFile();
var ziel:File = File.documentsDirectory.resolvePath("AIR Copy Test.txt");
quelle.copyTo(ziel);
Dieses Beispiel erzeugt eine temporäre Datei und kopierte diese anschließend in das Documenten Verzeichnis als Datei "AIR Copy Test.txt".
Datei löschen
Falls es nötig sein sollte eine Datei zu löschen, sollte vorher geprüft werden ob diese existiert um Fehlermeldungen zu vermeiden.
import flash.filesystem.*;
var delFile:File = File.documentsDirectory.resolvePath("AIR Copy Test.txt");
delFile.addEventListener(Event.COMPLETE, function(){
txt.text = 'Datei gelöscht';
});
if (delFile.exists) {
delFile.deleteFileAsync();
} else {
txt.text = 'Datei existiert nicht';
}
Dieses Beispiel löscht die Datei aus dem vorherigen Beispiel, falls diese schon gelöscht wurden ist wird die Meldung das die Datei existiert ausgegen.
Damit wir prüfen können ob die Datei erfolgreich gelöscht worden ist haben wir die "Async" Version verwendet.
Datei in den Mülleimer verschieben
Wenn eine Datei oder ein Verzeichnis gelöscht wird, befinded sich diese eigentlich nicht in dem Mülleimer.
Diese Dateien können nur mit Recovery Tools wiederhergestellt werden. Aus diesem Grund sollte man sich evt. überlegen diese in den Mülleimer zu verschieben anstatt komplett zu löschen.
import flash.filesystem.*;
File.createTempFile().copyTo(File.documentsDirectory.resolvePath("AIR Trash Test.txt"));
var trashFile:File = File.documentsDirectory.resolvePath("AIR Trash Test.txt");
trashFile.addEventListener(Event.COMPLETE, function(){
txt.text = 'Datei in Papierkorb verschoben';
});
if (trashFile.exists) {
trashFile.moveToTrashAsync();
} else {
txt.text = 'Datei existiert nicht';
}
Dieses Beispiel erzeugt eine temporäre Datei und kopiert diese in dsa Documenten Verzeichnis.
Aschnließend wird diese in den Mülleimer verschoben.
Wie man hier sieht ist die Zeile um eine temporäre Datei zu erstellen und ins Documentenverzeichnis zu kopieren verkürtzt dargestellt.
Wenn man erfahren ist mit Umgang von ActionScript kann man solte Abkürzungen verwenden.
Es sollte jedoch bedacht werden das diese schwerer zu lesen sind als die ausführliche Version.
Temporäre Datei erstellen
Die Beispiel davor enthalten bereits den Befehl um eine temporäre Datei zu erstellen.
Mit createTempFile() wird eine entsprechende temporäre Datei erstellt.
import flash.filesystem.*;
var tempFile:File = File.createTempFile();
txt.text = tempFile.nativePath;
Dieses Beispiel erstellt eine temporäre Datei und gibt den entsprechenden Path in dem Textfeld oder der Textarea mit den Instanz Namen txt zurück.
Es gibt einige Eigenschaften womit sich eine Datei genau definieren lässt.
Anbei eine entsprechende Tabele die alle verfügbaren Eigenschaft auflistet.
| Eigenschaft | Beschreibung | ||
|---|---|---|---|
| creationDate | Erstellungsdatum der Datei. | ||
| creator | veraltet --alternativ extension. (Wird nur von Mac Version unterstützt die älter als Mac OS X sind.) | ||
| exists | Prüft ob die Datei oder das Verzeichnis existieren. | ||
| extension | Die Dateiendung, welche Teil des Names ohne den abschließenden Punkt ".". Sollte der Dateiname keinen "." oder keine Endung erhalten wird hier null zurück gegeben. | ||
| icon | Icon Object, enthält das Icon das in der Datei definiert ist. | ||
| isDirectory | Prüft ob das gewählte Object ein Verzeichnis ist. | ||
| modificationDate | Änderungdatum der Datei. | ||
| name | Der Name der Datei oder des Verzeichnis mit evt. Dateieeindung. | ||
| nativePath | Der komplete Path zu der entsprechende Datei oder Verzeichnis | ||
| parent | Das übergeordnete Verzeichnis. Gibt null zurück falls das Object keinen übergeordneten Ordner. | ||
| size | Die Dateigröße in Bytes. | ||
| type | veraltet --alternativ extension. (Wird nur von Mac Version unterstützt die älter als Mac OS X sind.) | ||
| url | Die URL für das Verzeichnis oder der Datei. | ||
import flash.filesystem.*;
var tempFile:File = File.createTempFile();
txt.text = 'Size: ' + tempFile.size;
txt.text += '\nErstellungs Datum: ' + tempFile.creationDate;
txt.text += '\nName: ' + tempFile.name;
Diese Beispiel erzeugt eine Tempdatei und ließt hier die Informationen wie Größe, Erstellungsdatum und Name aus.
Die meisten Eigenschaften beziehen sich auf lokale Dateien und Verzeichnisse. Diese gelten nur teilweise für Netzwerke und Dateien die wo anders gespeichert werden.
Mit Adobe AIR können alle Dateien auf der Festplatte eingelesen werden sogar binäre Dateien können eingelesen werden und manipuliert werden.
Wir den Inhalt einer Datei anzeigen können sind 3 Schritte nötig.
1. Definieren des Pathes zu der Datei
Dies können wir recht einfach über ein Dateiauswahlfenster machen das wie folgt aussehen kann:
import flash.filesystem.*;
var chooseFile:File = File.documentsDirectory;
chooseFile.browseForOpen("Bitte Datei auswählen");
// Event Listener wenn eine Datei ausgewählt wurde
chooseFile.addEventListener(Event.SELECT, function() {
...chooseFile...
});
2. Definieren eines FileStream Object
Anschließend muss ein FileStream Object definiert werden, hier wird auch angegeben ob die Daten gelesen oder geschrieben werden sollen.
...
var fileStream:FileStream = new FileStream();
fileStream.open(chooseFile, FileMode.READ);
...
3. Daten von FileStream Object lesen und in ByteArray kopieren
Das FileStream Object enthält nun den Inhalt der Datei, jedoch müssen wir noch angeben wie wir die Daten bekommen wollen.
Ob im UTF Format oder normal und ob komplett oder Byteweise.
Hierfür definieren ein ByteArray und kopieren die Daten vom FileStream Object in dieses ByteArray.
...
var byteArray:ByteArray = new ByteArray();
fileStream.readBytes(byteArray,0,chooseFile.size);
fileStream.close();
...
Beispiel komplett
Das nachfolgende Beispiel fordert den User auf eine Datei auszuwählen, anschließend wird diese geladen und der Inhalt in eine Textarea oder Textfeld mit den Namen "txt" geschrieben.
readBytes erwartet als Parameter ein ByteArray als Ziel, anschließden die StartPosition und die Größe also wieviele Bytes eingelesen werden sollen.
.readBytes(byteArray,StartPosition,Länge);
import flash.filesystem.*;
import flash.utils.ByteArray;
var chooseFile:File = File.documentsDirectory;
chooseFile.browseForOpen("Bitte Datei auswählen"); // DateiPath definieren
// Event Listener wenn eine Datei ausgewählt wurde
chooseFile.addEventListener(Event.SELECT, function() {
var fileStream:FileStream = new FileStream(); // FileStream definieren
fileStream.open(chooseFile, FileMode.READ);
var byteArray:ByteArray = new ByteArray(); // ByteArray definieren
fileStream.readBytes(byteArray,0,chooseFile.size);
fileStream.close();
txt.text = byteArray.toString();
});
Mit diesen Beispiel können nur einfache Textdateien eingelesen werden.
Der Befehl .close() schließt den entsprechenden fileStream. Dies sollte nie vergessen werden, da sonst zu viele LOCKs erzeugt werden und man die Datei teilweise erst nach beenden von Adobe AIR löschen oder ändern kann.
Binäredatei müsste Byte für Byte eingelesen werden damit keine Informationen verlorgen gehen.
Um nun Daten zu schreiben müssen die selben Schritte wie beim lesen eingehalten werden.
1. Definieren des Pathes zu der Datei
Dazu wird wieder ein Dateiauswahlfenster verwendet, jedoch mit den Zusatz das wir Speichern wollen:
import flash.filesystem.*;
var chooseFile:File = File.documentsDirectory;
chooseFile.browseForSave("Bitte Datei zum Speichern auswählen");
// Event Listener wenn eine Datei ausgewählt wurde
chooseFile.addEventListener(Event.SELECT, function() {
...chooseFile...
});
2. Definieren eines FileStream Object
Anschließend muss ein FileStream Object definiert werden, hier wird angegeben das der FileStream zum schreiben verwendet werden soll.
...
var fileStream:FileStream = new FileStream();
fileStream.open(chooseFile, FileMode.WRITE);
...
3. Daten in das FileStream Object schreiben
Das FileStream Object enthält nun den Inhalt der Datei, jedoch müssen wir noch angeben wie wir die Daten bekommen wollen.
Ob im UTF Format oder normal und ob komplett oder Byteweise.
Hierfür definieren ein ByteArray und kopieren die Daten vom FileStream Object in dieses ByteArray.
...
var content:String = 'Hello world';
fileStream.writeMultiByte(content,"iso-8859-1");
fileStream.close();
...
Hier können natürlich auch andere Datentypen vom ByteArray verwenden, somit ist es auch möglich nur einzelne Bytes zu schreiben.
Beispiel komplett
Dieses Beispiel fordert den User auf eine Datei auszuwählen worin Daten gespeichert werden sollen.
Es wird dann der einfache Text "Hello World ^_-" in die Datei geschrieben.
import flash.filesystem.*;
var chooseFile:File = File.documentsDirectory;
chooseFile.browseForSave("Bitte Datei auswählen");
// Event Listener wenn eine Datei ausgewählt wurde
chooseFile.addEventListener(Event.SELECT, function() {
var fileStream:FileStream = new FileStream();
fileStream.open(chooseFile, FileMode.WRITE);
var content:String = 'Hello World ^_-';
fileStream.writeMultiByte(content,"iso-8859-1");
fileStream.close();
});
Bitte darauf achten das die ausgewählte Datei komplett überschrieben wird.
Jedoch wird auch ein entsprechender Hinweis ausgeben, ob die Datei wirklich überschrieben werden soll.
Das arbeiten mit Dateien und Verzeichnisse in Adobe AIR erfordert ein gutes Grundwissen in ActionScript 3.
Wer also noch keine Erfahrung mit ActionScript 3 hat sollte sich zuerst näher mit Action Script 3 beschäftigen.
