Το μεγαλύτερο μέρος του API στην ιεραρχία IResource λειτουργεί με τον ίδιο τρόπο ανεξάρτητα από το είδος του συστήματος αρχείων στο οποίο έχουν αποθηκευτεί οι πόροι. Ωστόσο, υπάρχουν ορισμένα, συγκεκριμένα API τα οποία πρέπει να αποφεύγετε όταν εργάζεστε σε άλλα συστήματα αρχείων διότι έχουν σχεδιαστεί μόνο για εργασία με το τοπικό σύστημα αρχείων.
Συγκεκριμένα, η μέθοδος IResource.getLocation έχει καθοριστεί έτσι ώστε να επιστρέφει τη διαδρομή του πόρου στο τοπικό σύστημα αρχείων. Εάν ο πόρος βρίσκεται σε άλλο σύστημα αρχείων, η μέθοδος αυτή δεν εφαρμόζεται και θα επιστρέψει την τιμή null. Είναι προτιμότερο να χρησιμοποιείτε τη μέθοδο getLocationURI, η οποία λειτουργεί ανεξάρτητα από το είδος του συστήματος αρχείων στο οποίο βρίσκεται αποθηκευμένος ο πόρος.
Παρομοίως, η μέθοδος IProjectDescription getLocation και η μέθοδος setLocation πρέπει να αποφεύγονται διότι είναι αποτελεσματικές μόνο στο τοπικό σύστημα αρχείων. Αντί αυτών, θα πρέπει να χρησιμοποιούνται οι μέθοδοι εύρεσης θέσης που βασίζονται σε URI.
Ας υποθέσουμε ότι εργάζεστε με πόρους που δεν βρίσκονται στο τοπικό σύστημα αρχείων και χρειάζεστε πραγματικά ένα τοπικό αρχείο. Για παράδειγμα, θα μπορούσατε να χρησιμοποιείτε μια βιβλιοθήκη που έχει εξάρτηση από ένα java.io.File). Στην περίπτωση αυτή, μπορείτε να χρησιμοποιήσετε τη μέθοδο IFileStore.toLocalFile προκειμένου να αποκτήσετε ένα τοπικό αντίγραφο του αρχείου. Σημειώστε ότι με αυτή τη μέθοδο θα αποθηκευτεί στη λανθάνουσα μνήμη μόνο το αρχείο ή ο κατάλογος και όχι ολόκληρη η διακλάδωση καταλόγου. Εδώ, δίνεται ένα παράδειγμα χρησιμοποίησης της αποθήκευσης στην τοπική λανθάνουσα μνήμη για το άνοιγμα ενός συμπιεσμένου αρχείου σε μια IFileStore:
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);
Μπορείτε να χρησιμοποιήσετε διασυνδεδεμένους πόρους για να δημιουργήσετε έργα που περιέχουν πόρους από πολλαπλά συστήματα αρχείων. Απλώς χρησιμοποιήστε τη μέθοδο IFile.createLink(URI, int, IProgressMonitor) ή τη IFolder.createLink(URI, int, IProgressMonitor) για να δημιουργήσετε έναν πόρο σε ένα υπάρχον έργο, τα περιεχόμενα του οποίου είναι αποθηκευμένα σε άλλη θέση σε ένα αυθαίρετο σύστημα αρχείων. Μπορείτε να δημιουργήσετε ακόμη και διασυνδέσεις κάτω από άλλους διασυνδεδεμένους πόρους προκειμένου να δημιουργήσετε αυθαίρετες διακλαδώσεις πόρων που προέρχονται από πολλά διαφορετικά συστήματα αρχείων. Ακολουθεί ένα απλό παράδειγμα που δημιουργεί ένα αδελφικό,διασυνδεδεμένο αρχείο που έχει την ίδια θέση στο σύστημα αρχείων με το αρχείο προέλευσης:
IFile source = ...;//some source file IFile link = source.getParent().getFile(new Path(source.getName() + ".link")); link.createLink(source.getLocationURI(), IResource.NONE, null);