Adobe Air (wiwobooks.com Release)
File.applicationStorageDirectory.resolvePath("myDir"); if(myDir.isDirectory && myDir.exists) {
var newDir:File = File.userDirectory.resolvePath(myDir.name); try {
myDir.moveTo(newDir, true); // Verzeichnis überschreiben }
catch(e:IOError) {
// Fehlerbehandlungsquelltext
}
12.3.13 Datei oder Verzeichnis kopieren
Die Vorgehensweise zum Kopieren von Dateien oder Verzeichnissen ähnelt stark der zum Verschieben von Ressourcen. Auch hier werden jeweils eine File-Instanz für die Quellressource und die Zielressource erstellt. Die Methoden zum Kopieren heißen copyTo() bzw. copyToAsync() und werden im Kontext der Quellressource mit der Zielressource als erstem Parameter ausgeführt. Auch hier gibt ein optionaler boolscher zweiter Parameter an, ob die Zielressource überschrieben werden soll.
Lösungsweg
1. Erstellen einer File -Instanz für die zu kopierende Ressource
2. Erstellen einer File -Instanz für die Zielressource
3. Aufruf der copyTo() - bzw. copyToAsync() -Methode der Quellressource für synchrones bzw. asynchrones Kopieren, der die Zielressource als erster Parameter übergeben wird.
Der optionale boolsche zweite Parameter overwrite gibt an, ob der Zielinhalt überschrieben werden soll, falls er schon existiert.
Stolperfallen/Caveats
Auch die Kopieren-Methoden löschen wie die Verschieben-Methoden das Zielverzeichnis, wenn es bereits vorhanden ist und das Überschreiben mithilfe des overwrite -Parameters aktiviert ist. Wenn Sie sichergehen möchten, dass bereits bestehende Dateien im Verzeichnis erhalten bleiben, die im Quellverzeichnis nicht vorhanden sind, empfiehlt es sich, den Inhalt des Quellverzeichnisses einzeln zu kopieren. Ferner können Pfade unter Windows nicht länger als 255 Zeichen sein. Rechnen Sie damit, dass dieses Limit bei stark verschachtelter Verzeichnisstruktur und langen Dateinamen überschritten werden könnte.
So geht es
Im nachfolgenden Quelltextabschnitt wird das Verzeichnis myDir vom Anwendungs-Dokumentenverzeichnis in das Benutzerverzeichnis kopiert:
import flash.filesystem.File;
import flash.errors.IOError;
var myDir:File = File.applicationStorageDirectory.resolvePath("myDir"); if(myDir.isDirectory && myDir.exists) {
var newDir:File = File.userDirectory.resolvePath(myDir.name); try {
myDir.copyTo(newDir, true); // Verzeichnis überschreiben
trace("Datei erfolgreich kopiert.");
}
catch(e:IOError) {
// Fehlerbehandlungsquelltext
}
}
12.3.14 Verzeichnis durchsuchen
Wenn Sie den Inhalt eines Verzeichnisses durchsuchen wollen, müssen Sie in der Lage sein, den Verzeichnisinhalt aufzulisten. Die File -Klasse bietet zu diesem Zweck die Methoden getDirectoryListing() bzw. getDirectoryListingAsync() für synchrones bzw. asynchrones Lesen des Verzeichnisinhalts. Wenn Sie das zu prüfende Verzeichnis aus einer Verzeichnisliste auslesen, werden Sie der Regel vorher mithilfe der Eigenschaft isDirectory prüfen, ob es sich bei der File-Instanz tatsächlich um ein Verzeichnis handelt. Bei Erfolg wird ein Array von File -Objekten zurückgegeben. Jedes dieser Elemente steht für ein Unterverzeichnis oder eine Datei im durchsuchten Verzeichnis.
Lösungsweg
1. Erstellen einer File - I nstanz für das zu durchsuchende Verzeichnis
2. Aufruf der Methode getDirectoryListing() bzw. getDirectoryListingAsync() , um synchron bzw. asynchron ein Array mit dem Verzeichnisinhalt abzurufen.
getDirectoryListing()
Rückgabewert der Funktion ist das Array mit File -Objekte für den Inhalt
getDirectoryListingAsync()
Array mit File-Objekten wird mithilfe der Eigenschaft files des FileListEvent -Ereignisobjekts ausgelesen.
Stolperfallen/Caveats
Wenn Sie eine einfache Liste eines Verzeichnisinhalts mit seinen Unterverzeichnissen als Text ausgeben wollen, bietet sich der verschachtelte Aufruf der synchronen Methode getDirectoryListing() an, da der Inhalt eines Verzeichnisses so erst komplett ausgegeben wird, bevor zum nächsten Verzeichnis weitergegangen wird. Sie sollten jedoch in diesem Fall die Tiefe des Durchlaufs begrenzen, da dieser eine lange Zeit beanspruchen kann, in deren Verlauf die Oberfläche dem Benutzer als eingefroren erscheint.
Möchten Sie dennoch einen Verzeichnisinhalt ganz darstellen, bietet es sich an, dies mithilfe der asynchronen Methode getDirectoryListingAsync() vorzunehmen.
So geht es
Das folgende Beispiel einer Flex-AIR-Anwendung gibt nach Klick auf den Button den Inhalt des Anwendungs- oder Benutzerverzeichnisses aus. Die Tiefe des Durchlaufs ist auf drei Ebenen
Weitere Kostenlose Bücher