Adobe Air (wiwobooks.com Release)
trace(myFile.exists.toString()); // false
12.3.6 Zugriffseinschränkungen für Dateisystemressourcen
Wenn Sie auf die Ressourcen, auf die eine File -Instanz verweist, schreibend zugreifen wollen, müssen Sie über die entsprechenden Berechtigungen verfügen. Das ist besonders für Benutzer von Mac OS X und Linux von Bedeutung, aber auch für Windows-Benutzer, wenn sie das NTFS-Dateisystem verwenden. Als Faustregel kann gelten, dass Sie von eingeschränkten Zugriffsrechten auf das Installationsverzeichnis der Anwendung ausgehen können, innerhalb des Benutzerverzeichnisses aber Verzeichnisse und Dateien erstellen, löschen oder verändern können.
Wie Sie in Abschnitt 12.2.2 gesehen haben, befindet sich das Anwendungsverzeichnis außerhalb des Benutzerverzeichnisses, das Anwendungs-Dokumentenverzeichnis jedoch innerhalb. Verwenden Sie daher also für Schreibzugriffe auf das Dateisystem nicht das Anwendungsverzeichnis, sondern das AnwendungsDokumentenverzeichnis oder andere innerhalb des Benutzerverzeichnisses liegende Ressourcen.
12.3.7 Verzeichnis erstellen
Sie können den File -Zeiger auf ein Verzeichnis dazu verwenden, das entsprechende Verzeichnis zu erstellen. Voraussetzung hierfür ist die ausreichende Zugriffsberechtigung auf die Ressourcen, in denen das neue Verzeichnis erstellt werden soll.
Lösungsweg
Erstellen einer File -Instanz, die auf das Verzeichnis verweist, das erstellt werden soll.
Aufruf der Methode createDirectory() der File -Instanz
So geht es
Ein Quelltextabschnitt, mit dem Sie ein neues Verzeichnis innerhalb des Anwendungs-Dokumentenverzeichnisses erstellen, könnte so aussehen:
import flash.filesystem.File;
var appStorageDir:File = File.applicationStorageDirectory; var newDir:File = appStorageDir.resolvePath("Testverzeichnis"); newDir.createDirectory();
12.3.8 Verzeichnis löschen
Sie können natürlich auch ein Verzeichnis des Dateisystems löschen (ausreichende Berechtigung vorausgesetzt). Hierfür gibt es in der File -Klasse zwei Methoden: deleteDirectory() und deleteDirectoryAsync() für das synchrone bzw. für das asynchrone Löschen.
Sie können der Methode einen boolschen Wert als Parameter übergeben, der angibt, ob im Verzeichnis enthaltene Unterverzeichnisse und Dateien ebenfalls gelöscht werden sollen. Die Übergabe des Wertes false , der auch der Standardeinstellung entspricht, bewirkt, dass ein IOError ausgelöst wird, wenn das zu löschende Verzeichnis nicht leer ist.
Lösungsweg
1. Erstellen einer File -Instanz, die auf das zu löschende Verzeichnis verweist.
2. Aufruf der Methode deleteDirectory() bzw. deleteDirectoryAsync() zum synchronen bzw. asynchronen Löschen des Verzeichnisses
Optional: Angabe des Parameters deleteDirectoryContents als boolscher Wert zur Löschung des Verzeichnisinhalts
Stolperfallen/Caveats
Abhängig vom Betriebssystem kann das Löschen eines Verzeichnisses eine Intervention des Betriebssystems hervorrufen, die eine explizite Bestätigung des Löschvorgangs erfordert. In diesem Fall werden Sie verhindern wollen, dass die Anwendung komplett stillsteht, solange eine Bestätigung aussteht, und daher das Verzeichnis eher asynchron zu löschen versuchen. Bedenken Sie diese Möglichkeit bei der Wahl zwischen deleteDirectory( ) und deleteDirectoryAsync().
Weitere Details zu synchronen bzw. asynchronen Dateioperationen finden Sie in Abschnitt 12.1.
So geht es
Der nachfolgende Quelltext erstellt eine File -Instanz für ein Verzeichnis und versucht dies zu löschen, wenn es vorhanden ist. Wenn das Verzeichnis nicht leer ist, wird der Fehler abgefangen:
import flash.filesystem.File;
import flash.errors.IOError;
var appStorDir:File = File.applicationStorageDirectory
var myDir:File = appStorDir.resolvePath("Testverzeichnis"); if(myDir.exists && myDir.isDirectory) {
try {
myDir.deleteDirectory();
}
catch(e:IOError) {
// Code zur Fehlerbehandlung, wenn nicht leer
}
}
12.3.9 Temporäres Verzeichnis erstellen
Wenn Sie ein Verzeichnis nur vorübergehend brauchen, können Sie sich einiges an Mühe sparen, wenn Sie mit einem temporären Verzeichnis arbeiten. Die File - Klasse stellt hierfür die statische Methode createTempDirectory() zur Verfügung, die die File -Instanz des neuen Verzeichnisses zurückgibt. Das neue Verzeichnis wird im temporären Verzeichnis des Betriebssystems angelegt und bekommt automatisch einen eindeutigen Namen, um den Sie sich nicht zu kümmern brauchen. Wenn Sie es interessiert, können Sie den Namen der neuen Datei jedoch
Weitere Kostenlose Bücher