Η πρόσθετη λειτουργία org.eclipse.core.filesystem παρέχει ένα γενικό API για την αλληλεπίδραση με ένα αυθαίρετο σύστημα αρχείων. Αυτό το API είναι παρόμοιο με το java.io.File, αλλά με ορισμένες κύριες διαφορές:
Στο API σύστημα αρχείων, η διαδρομή για κάθε δεδομένο αρχείο αναπαριστάται ως ένα ιεραρχικό java.net.URI. Το σχήμα URI αναπαριστά το είδος του συστήματος αρχείων και το συστατικό στοιχείο της διαδρομής URI αναπαριστά τη θέση του αρχείου στη διακλάδωση του συστήματος αρχείων. Έτσι, κάθε δεδομένο ιεραρχικό URI αναπαριστά ένα πιθανό αρχείο ή κατάλογο σε κάποιο αυθαίρετο σύστημα αρχείων.
Το API για την εργασία με αρχεία και συστήματα αρχείων βρίσκεται στο πακέτο org.eclipse.core.filesystem). Το κεντρικό είδος API είναι IFileStore. Κάθε χρήση του IFileStore αναπαριστά ένα μεμονωμένο αρχείο στο σύστημα αρχείων. Όπως και με το IResource, η ύπαρξη μιας χρήσης IFileStore δεν σημαίνει ότι ένα τέτοιο αρχείο υπάρχει στο δίσκο. Μπορείτε να χρησιμοποιήσετε μια χρήση IFileStore για να δημιουργήσετε, να διαγράψετε, να αντιγράψετε, να μετακινήσετε ή να ανοίξετε ροές σε αρχεία. Για ένα δεδομένο URI, μπορείτε να αποκτήσετε πρόσβαση στη χρήση IFileStore χρησιμοποιώντας τη στατική μέθοδο EFS.getStore(URI)
Η διεπαφή IFileSystem μπορεί να χρησιμοποιηθεί για την ανακάλυψη κι άλλων λεπτομερειών σχετικά με το σύστημα αρχείων ως σύνολο. Κάθε χρήση IFileSystem αναπαριστά ένα μεμονωμένο σχήμα URI, όπως "αρχείο:", "ftp:", κλπ. Μπορείτε να χρησιμοποιήσετε αυτό το είδος για να υποβάλλετε ερωτήματα σχετικά με το ποια γνωρίσματα αρχείων υποστηρίζονται ή για το αν το σύστημα αρχείων χρησιμοποιεί διάκριση πεζών-κεφαλαίων. Μπορείτε επίσης να χρησιμοποιήσετε αυτό το είδος για να λάβετε ένα IFileStore για ένα δεδομένο URI.
Οι περισσότερες μέθοδοι για το IFileStore διαθέτουν μια παράμετρο ενδείκτη που επιτρέπει την παροχή πρόσθετων επιλογών. Οι τιμές του ενδείκτη βρίσκονται στην κλάση EFS. Για παράδειγμα, για να ανοίξετε μια ροή εξόδου για την προσάρτηση σε ένα αρχείο, χρησιμοποιήστε:
IFileStore store = ...//some file store store.openOutputStream(EFS.APPEND, null);
Εάν επιθυμείτε την προεπιλεγμένη συμπεριφορά για μια μέθοδο, χρησιμοποιήστε EFS.NONE.
Η διεπαφή IFileInfo αναπαριστά την κατάσταση ενός αρχείου σε μια συγκεκριμένη χρονική στιγμή. Συγκεκριμένα, μπορείτε να μάθετε εάν το αρχείο υπάρχει, εάν πρόκειται για κατάλογο, ποια είναι τα γνωρίσματά του και ούτω καθεξής. Οι πληροφορίες αυτές μπορούν να τροποποιηθούν και να αποθηκευτούν στο αρχείο. Για παράδειγμα, εδώ έχουμε ένα τμήμα κώδικα που ρυθμίζει το γνώρισμα "μόνο προς ανάγνωση" ενός καταλόγου:
IFileStore store = ...//some file store IFileInfo info = store.fetchInfo(); if (info.exists() && info.isDirectory()) { info.setAttribute(EFS.ATTRIBUTE_READ_ONLY, true); store.putInfo(info, EFS.SET_ATTRIBUTES, null); }
Αυτό το στυλ API σας επιτρέπει να λάβετε και να αλλάξετε τις πληροφορίες ενός καταλόγου με μία μόνο κλήση στο στο σύστημα αρχείων. Στο παραπάνω παράδειγμα, υπάρχει μόνο μία κλήση στο σύστημα αρχείων για τη λήψη πληροφοριών, ενώ μετά μπορείτε να εκτελέσετε όσες λειτουργίες θέλετε στο αντικείμενο IFileInfo χωρίς άλλη αναζήτηση στο δίσκο.
Η κλάση EFS διαθέτει στατικές μεθόδους κατασκευής για τη λήψη των χρήσεων IFileStore και IFileSystem, καθώς επίσης και διάφορες σταθερές επιλογών και κωδικούς σφαλμάτων.