Der größte Teil der APIs in der Hierarchie von IResource funktioniert unabhängig davon, in welchem Dateisystemtyp die Ressourcen gespeichert sind, immer auf dieselbe Weise. Es gibt jedoch einige spezielle APIs, die Sie bei der Arbeit mit Ressourcen in anderen Dateisystemen meiden müssen, weil sie ausschließlich für das Arbeiten mit dem lokalen Dateisystem gedacht sind.
Insbesondere ist die Methode IResource.getLocation dazu gedacht, den Pfad der Ressource im lokalen Dateisystem zurückzugeben. Befindet sich die Ressource in einem anderen Dateisystem, ist diese Methode nicht anwendbar und gibt null zurück. Stattdessen sollte die Methode getLocationURI verwendet werden. Für die Funktionsweise dieser Methode ist es nicht von Bedeutung, in welchem Dateisystemtyp die Ressource gespeichert ist.
Ähnlich sollten die Methoden getLocation und setLocation aus IProjectDescription nicht eingesetzt werden, weil sie nur im lokalen Dateisystem wirksam sind. Stattdessen sollten Sie die Positionierungsmethoden auf URI-Basis verwenden.
Angenommen, Sie arbeiten mit Ressourcen, die sich nicht im lokalen Dateisystem befinden, benötigen jedoch eine lokale Datei, beispielsweise weil Sie ein Datei verwenden, die von java.io.File abhängig ist. In diesem Fall können Sie mit der Methode IFileStore.toLocalFile eine lokale Kopie der Datei abrufen. Bitte beachten Sie, dass hierbei keine vollständige Verzeichnisstruktur, sondern nur 1 Datei oder 1 Verzeichnis in den lokalen Cache gestellt. Im folgenden Beispiel wird eine komprimierte Datei mit dem lokalen Caching für IFileStore geöffnet:
IFileStore store = ...;//some file store java.io.File file = store.toLocalFile(EFS.NONE, null); if (file == null) { //we are not a local file store, so we need to cache a local copy file = store.toLocalFile(EFS.CACHE, null); } java.util.zip.ZipFile zip = new java.util.ZipFile(file);
Durch die Verwendung von verlinkten Ressourcen können Sie Projekte erstellen, die Ressourcen aus verschiedenen Dateisystemen kombinieren. Erstellen Sie mit der Methode IFile.createLink(URI, int, IProgressMonitor) oder IFolder.createLink(URI, int, IProgressMonitor) einfach eine Ressource in einem vorhandenen Projekt, dessen Inhalt in einer anderen Position eines beliebigen Dateisystems gespeichert ist. Sie können sogar Links unterhalb von anderen verlinkten Ressourcen erstellen und auf diese Weise beliebige Ressourcenstrukturen erstellen, die Elemente aus vielen verschiedenen Dateisystemen enthalten. Das folgende einfache Beispiel erstellt eine gleichgeordnete verlinkte Datei, die dieselbe Dateisystemposition wie die Quelle verwendet:
IFile source = ...;//some source file IFile link = source.getParent().getFile(new Path(source.getName() + ".link")); link.createLink(source.getLocationURI(), IResource.NONE, null);