Adobe Air (wiwobooks.com Release)
beschränkt:
private function showDirContents(dir:File,
depth:uint = 1):void {
switch(depth) {
case 1:
taDebug.text = dir.name + ":\n";
break;
case 4:
return;
}
var contentArray:Array = dir.getDirectoryListing(); for(var i:uint = 0;i var thisRessource:File = File(contentArray[i]); taDebug.text += new Array(depth).join(" ") + thisRessource.name + "\n";
if(thisRessource.isDirectory || thisRessource. isPackage) {
showDirContents(thisRessource, depth+1); }
}
}
]]>
click="showDirContents(File.applicationDirectory)"/> click="showDirContents(File.userDirectory)"/> fontFamily="Monaco, Lucida Console, Andale Mono"/>
Listing 12.2 Beispiel: Verzeichnisinhalt anzeigen
12.4 FileStream-Klasse
Die File -Klasse stellt also Zeiger auf Ressourcen bereit. Wenn Sie aber eine Datei laden wollen, kommt die Klasse FileStream ins Spiel. FileStream stellt gewissermaßen das Arbeitstier von Dateisystemoperationen dar. FileStream -Instanzen repräsentieren das konkrete Gegenstück der abstrakten Zeiger auf Dateisystemressourcen. Während Verzeichnisse mithilfe ihrer File -Instanz erstellt, gelöscht und ausgelesen werden, bedarf es für das Öffnen und Schreiben von Dateien der FileStream -Klasse.
12.4.1 Dateimodi
Wenn Sie mit der FileStream -Klasse auf eine Datei zugreifen, geben Sie beim Öffnen der Datei an, in welchem Modus die Datei geöffnet werden kann. Die möglichen Modi sind in der Klasse FileMode als Klassenkonstanten definiert. Tabelle 12.4 liefert einen Überblick.
Konstante
FileMode.READ
FileMode.WRITE
FileMode.APPEND
FileMode.UPDATE
Bedeutung
Datei wird für Lesezugriff geöffnet.
Datei wird für Schreibzugriff geöffnet (bzw. erstellt, falls noch nicht vorhanden). Bestehender Inhalt der Datei wird verworfen.
Datei wird für Schreibzugriff geöffnet (bzw. erstellt, falls noch nicht vorhanden). Neuer Inhalt wird an etwaigen bestehenden Inhalt angehängt.
Datei wird für Lese-/Schreibzugriff geöffnet. Nach Laden der Datei vorgenommene Änderungen werden beim Schließen des FileStream -Objekts übernommen.
Tabelle 12.4 In der Klasse FileMode definierte Dateimodi
Wie in ActionScript oft üblich, dient die Klasse FileMode ausschließlich dazu, FileStream -Instanzen die Konstanten zur Verfügung zu stellen, die sie alsfileMode -Parameter der open() - und openAsync() -Methoden benötigen.
12.4.2 Datei zum Lesen oder Schreiben öffnen
Wenn Sie eine File-Instanz für eine Datei erstellt haben und dabei feststellen, dass diese existiert, und wenn Sie über die nötigen Berechtigungen verfügen, um auf die Datei zuzugreifen, steht dem eigentlichen Laden der Ressource nichts mehr im Weg. Da das Laden insbesondere größerer Dateien einige Zeit beanspruchen kann, stehen auch der FileStream -Instanz mit open() und openAsync() sowohl eine synchrone als auch eine asynchrone Methode zur Verfügung.
Lösungsweg
1. Erstellen einer File -Instanz als Zeiger auf die zu lesende Datei
2. Erstellen einer FileStream -Instanz für die Datei
3. Aufruf der Funktion open() bzw. openAsync() zum synchronen bzw. asynchronen Öffnen der Datei
File -Instanz als erster Parameter
je nach beabsichtigtem Zugriff eine der vier FileMode -Klassenkonstanten als zweiter Parameter (siehe Tabelle 12.4)
4. Falls openAsync() verwendet wird: Definition von Ereignisbehandlungsroutinen mithilfe addEventListener() (siehe Abschnitt 12.5)
5. Quelltext zum Lesen oder Schreiben des Dateiinhalts einfügen 6. Aufruf der Methode close() zum Schließen der FileStream -Instanz, sobald diese nicht mehr benötigt wird.
So geht es
So in etwa könnte der Abschnitt des Quelltexts zum synchronen Lesen einer Datei in vereinfachter Form aussehen:
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.errors.IOError;
var myFile:File = File.applicationStorageDirectory;
myFile = myFile.resolvePath("someDir/myFile.txt");
var myFileStream:FileStream = new FileStream();
try {
myFileStream.open(myFile, FileMode.READ);
// Länge der Zeichenkette herausfinden
var myFileLength:uint = myFileStream.bytesAvailable;
// alle Zeichen als UTF-8 auslesen
var fileText:String = myFileStream.readUTFBytes(myFileLength); trace(fileText);
//
Weitere Kostenlose Bücher