Suurin osa IResource-hierarkian ohjelmointirajapinnoista toimii samalla tavalla huolimatta siitä, millaiseen tiedostojärjestelmään resurssit on tallennettu. Joitakin ohjelmointirajapintoja kuitenkin kannattaa välttää käytettäessä muissa tiedostojärjestelmissä olevia resursseja, koska ne on suunniteltu käyttämään paikallista tiedostojärjestelmää.
Varsinkin IResource.getLocation-metodi on määritetty palauttamaan resurssin paikallisen tiedostojärjestelmän polun. Jos resurssi on jossakin muussa tiedostojärjestelmässä, metodi ei toimi, vaan palauttaa arvon null. On parempi käyttää metodia getLocationURI, joka toimii siitä huolimatta, millaiseen tiedostojärjestelmään resurssi on tallennettu.
Samoin metodeja IProjectDescription getLocation ja setLocation tulee välttää, koska ne toimivat vain paikallisessa tiedostojärjestelmässä. Käytä niiden sijasta URI-perusteisia paikannusmetodeja.
Oletetaan, että käytät resursseja, jotka eivät ole paikallisessa tiedostojärjestelmässä, mutta tarvitset paikallisen tiedoston. Käytössä voi olla esimerkiksi kirjasto, jossa on java.io.File-alisteisuus. Tässä tapauksessa voit hankkia paikallisen kopion tiedostosta IFileStore.toLocalFile-metodin avulla. Huomaa, että tämän tuloksena vain yksi tiedosto tai hakemisto tallennetaan paikallisesti välimuistiin, ei kokonaista hakemistorakennetta. Seuraavassa on esimerkki paikallisen välimuistitallennuksen käytöstä zip-tiedoston avaamiseen IFileStore-kohteessa:
IFileStore store = ...;//jokin tiedostovarasto java.io.File file = store.toLocalFile(EFS.NONE, null); if (file == null) { //emme ole paikallisessa tiedostovarannossa, joten paikallinen kopio on tallennettava välimuistiin file = store.toLocalFile(EFS.CACHE, null); } java.util.zip.ZipFile zip = new java.util.ZipFile(file);
Linkitettyjen resurssien avulla voit luoda projekteja, jotka käyttävät resursseja useista tiedostojärjestelmistä. Voit luoda resurssin aiemmin luotuun projektiin, jonka sisältö on tallennettu toiseen sijaintiin muussa tiedostojärjestelmässä käyttämällä metodia IFile.createLink(URI, int, IProgressMonitor) tai IFolder.createLink(URI, int, IProgressMonitor). Voit myös luoda resurssirakenteita useiden eri tiedostojärjestelmien resursseista luomalla linkkejä muiden linkitettyjen resurssien alle. Seuraavassa on esimerkki, jossa luodaan linkitetty rinnakkaistiedosto, jolla on sama tiedostojärjestelmän sijainti kuin lähteellä:
IFile source = ...;//jokin lähdetiedosto IFile link = source.getParent().getFile(new Path(source.getName() + ".link")); link.createLink(source.getLocationURI(), IResource.NONE, null);