Adobe Air (wiwobooks.com Release)
Datei, sondern lediglich einen Zeiger auf die Ressource.
12.3.2 Pfade von Dateien und Verzeichnissen
Grundsätzlich verfügt ein File -Objekt über zwei Eigenschaften, die den Pfad der Ressource repräsentieren:
nativePath
Der native, plattformspezifische Pfad zur Ressource url
Mithilfe des URL-Schemas angegebener Pfad
Eigenschaft nativePath
Auch wenn Sie die Eigenschaft nativePath direkt definieren können, empfiehlt es sich, sie nur zum Auslesen des Pfades einer Ressource zu verwenden, da das Format eines nativen Pfades plattformspezifisch ist. So funktioniert die folgende Pfadangabe für eine Textdatei nur unter Windows:
C:\Dokumente und Einstellungen\Benutzer\meineDatei.txt
Ein nativer Pfad unter Mac OS X hingegen sieht folgendermaßen aus: /User/Benutzer/meineDatei.txt
Unter Linux schließlich gibt es einen nativen Pfad wie folgt:
/home/Benutzer/meineDatei.txt
url
Mithilfe der Eigenschaft url können Sie native Pfade mithilfe des URL-Schemas angeben, wie im folgenden Abschnitt beschrieben.
12.3.3 URL-Schemata
Wenn Sie mit Ihrem Browser eine Datei aufrufen, die sich auf Ihrem lokalen Laufwerk befindet, steht in der Adresszeile eine URL, die mit file:/// beginnt, z. B. unter Windows:
file:///C:/Dokumente%20und%20Einstellungen/Benutzer/meineDatei.txt
Dieses URL-Schema können Sie auch in AIR verwenden. Allerdings ergibt sich so die gleiche Problematik der plattformspezifischen Pfade wie im Zusammenhang mit der Eigenschaft nativePath .
AIR definiert daher zwei weitere URL-Schemata, die es Ihnen ermöglichen, den Pfad einer Ressource relativ zu den Ressourcen Ihrer Anwendung zu definieren: app:/
Repräsentiert das Anwendungsverzeichnis
app-storage:/
Repräsentiert das Anwendungs-Dokumentenverzeichnis
Mit diesen URL-Schemata können Sie unabhängig vom tatsächlichen Speicherort auf die Verzeichnisse der Anwendung zugreifen. Mithilfe der url -Eigenschaft der File -Instanz können Sie Ressourcen innerhalb eines dieser Verzeichnisse darstellen – das kennen Sie bereits aus dem Internet. Die folgende URL steht z. B. für eine Textdatei meineDatei.txt in einem Unterverzeichnis des Anwendungsverzeichnisses: app:/unterverzeichnis/meineDatei.txt
12.3.4 Relative Pfade auflösen
Eine weitere Methode, mit einem relativen Pfad eine absolute Ressource herauszufinden, besteht in der Verwendung der File -Methode resolvePath() . So können Sie ganz einfach von einem File -Objekt aus über einen relativen Pfad zu einer anderen File -Instanz finden.
Lösungsweg
Übergabe des relativen Pfads an die resolvePath() -Methode des Bezugs File - Objekts. Rückgabewert ist eine File -Instanz.
Stolperfallen/Caveats
Beachten Sie auch hier, dass das erfolgreiche Auflösen eines relativen Pfades nicht automatisch bedeutet, dass eine zu dem Pfad passende Ressource auch tatsächlich vorhanden ist. Dabei kann es durchaus vorkommen, dass mehrere aufeinander aufbauende resolvePath() -Aufrufe ohne Beanstandung verlaufen, obwohl die entsprechenden Ressourcen tatsächlich noch nicht vorhanden sind, wie im folgenden Beispiel gezeigt wird:
import flash.filesystem.File;
var myDir1:File = File.applicationDirectory.resolvePath("invalidDir"); var myDir2:File = myDir1.resolvePath("inexistentDir");
var myFile:File = myDir2.resolvePath("inexistentFile.txt"); trace(myFile.nativePath);
AIR verzögert diese Frage bis zu dem Zeitpunkt, zu dem die Ressource tatsächlich gebraucht wird. Konsequenterweise erstellt AIR dabei, ausreichende Schreibberechtigung vorausgesetzt, auf dem Weg zur gewünschten Ressource eventuell fehlende Verzeichnisse.
So geht es
Im nachfolgenden Beispiel wird eine File -Instanz für das Anwendungsverzeichnis sowie für eine darin enthaltene Datei config.xml erstellt. Dabei handelt es sich lediglich um einen Zeiger auf die Ressource – es ist unerheblich, ob diese Datei tatsächlich existiert oder nicht:
import flash.filesystem.File;
var appDir:File = File.applicationDirectory;
var configFile:File = appDir.resolvePath("config.xml");
12.3.5 Existenz einer Ressource prüfen
Wenn Sie sichergehen wollen, dass die zu Ihrer File -Instanz passende Ressource schon existiert, brauchen Sie lediglich den Wert der Eigenschaft exists der FileInstanz zu überprüfen – diese gibt true zurück (welch Wunder), wenn die Ressource existiert, und false , wenn sie nicht existiert:
import flash.filesystem.File;
var appDir:File = File.applicationDirectory;
var myFile:File = appDir.resolvePath("inexistentFile.txt");
Weitere Kostenlose Bücher