Κωδικοποίηση αρχείου και είδη περιεχομένου

Η πρόσθετη λειτουργία του περιβάλλοντος εκτέλεσης πλατφόρμας ορίζει την υποδομή για τον καθορισμό και τον εντοπισμό ειδών περιεχομένου για ροές δεδομένων. (Για μια επισκόπηση του πλαισίου περιεχομένου, δείτε την ενότητα Είδη περιεχομένου.) Ένα σημαντικό στοιχείο του συστήματος ειδών περιεχομένου είναι η ικανότητα καθορισμού διαφορετικής κωδικοποίησης (σύνολα χαρακτήρων) για διαφορετικά είδη περιεχομένου. Το API πόρων επιτρέπει επιπλέον την καθιέρωση προεπιλεγμένων συνόλων χαρακτήρων για έργα, φακέλους και αρχεία. Μπορείτε να συμβουλεύεστε αυτά τα προεπιλεγμένα σύνολα χαρακτήρων για να ενημερώνεστε εάν το περιεχόμενο του ίδιου του αρχείου δεν καθορίζει μια συγκεκριμένη κωδικοποίηση μέσα στη ροή δεδομένων.

Ρύθμιση ενός συνόλου χαρακτήρων

Στην ενότητα Είδη περιεχομένου είδαμε ότι μπορείτε να δημιουργήσετε προεπιλεγμένες κωδικοποίησεις αρχείου για είδη περιεχομένου. Ένας πιο ιδιαίτερος έλεγχος παρέχεται από το API πόρων.

Το IContainer καθορίζει το πρωτόκολλο για τη ρύθμιση του προεπιλεγμένου συνόλου χαρακτήρων για ένα συγκεκριμένο έργο ή φάκελο. Παρέχεται έτσι στις πρόσθετες λειτουργίες μεγαλύτερη ελευθερία (και τελικά στο χρήστη) για τον προσδιορισμό του κατάλληλου συνόλου χαρακτήρων για ένα σύνολο αρχείων όταν τα προεπιλεγμένα σύνολα χαρακτήρων από το είδος περιεχομένου ενδέχεται να μην είναι κατάλληλα.

Το IFile ορίζει το API για τη ρύθμιση του προεπιλεγμένου συνόλου χαρακτήρων για ένα συγκεκριμένο αρχείο. Αν δεν έχει καθοριστεί κωδικοποίηση μέσα στα περιεχόμενα του αρχείου, τότε χρησιμοποιείται αυτό το σύνολο χαρακτήρων. Το προεπιλεγμένο σύνολο χαρακτήρων του αρχείου υπερισχύει του προεπιλεγμένου συνόλου χαρακτήρων που καθορίζεται στο φάκελο αρχείου, στο έργο ή το είδος περιεχομένου.

Και οι δύο αυτές λειτουργίες είναι διαθέσιμες στον τελικό χρήστη στη σελίδα ιδιοτήτων ενός πόρου.

Υποβολή ερωτήματος για ένα σύνολο χαρακτήρων

Το IFile καθορίζει επίσης το API για την υποβολή ερωτήματος για το σύνολο χαρακτήρων ενός αρχείου. Ένας ενδείκτης λογικής τιμής καθορίζει κατά πόσον θα πρέπει να επιστραφεί το σύνολο χαρακτήρων το οποίο ορίστηκε ρητά για το αρχείο ή ένα προσδιορισμένο σύνολο χαρακτήρων. Για παράδειγμα:

	String charset = myFile.getCharset(false);

επιστρέφει null αν δεν έχει οριστεί ρητά ένα σύνολο χαρακτήρων στο myFile. Συνεπώς,

	String charset = myFile.getCharset(true);

ελέγχουμε πρώτα για ένα σύνολο χαρακτήρων το οποίο ρυθμίστηκε ρητά στο αρχείο. Αν δεν εντοπιστεί κανένα τέτοιο σύνολο χαρακτήρων, τότε το περιεχόμενο του αρχείου θα ελεγχθεί για μια περιγραφή του συνόλου χαρακτήρων. Αν δεν εντοπιστεί καμία τέτοια περιγραφή, τότε τα αρχεία που περιέχουν τους φακέλους και τα έργα θα ελεγχθούν για ένα προεπιλεγμένο σύνολο χαρακτήρων. Αν δεν εντοπιστεί κανένα τέτοιο σύνολο, θα ελεγχθεί το προεπιλεγμένο σύνολο χαρακτήρων που καθορίστηκε για το ίδιο το είδος περιεχομένου. Και τελικά, το προεπιλεγμένο σύνολο χαρακτήρων πλατφόρμας θα επιστραφεί αν δεν υπάρχει άλλος προορισμός προεπιλεγμένου συνόλου χαρακτήρων. Η χρήση της μεθόδου getCharset() είναι η ίδια με αυτή της μεθόδου getCharset(true).

Είδη περιεχομένου για αρχεία στο χώρο εργασίας

Για αρχεία στο χώρο εργασίας, το IFile παρέχει API για την απόκτηση της περιγραφής περιεχομένου του αρχείου:

IFile file = ...;
IContentDescription description = file.getDescription();

Αυτό το API πρέπει να χρησιμοποιείται ακόμα και όταν οι πελάτες ενδιαφέρονται μόνο για τον καθορισμό του είδους περιεχομένου -μπορείτε εύκολα να αποκτήσετε το είδος περιεχομένου από την περιγραφή περιεχομένου. Μπορείτε επίσης να εντοπίσετε το είδος περιεχομένου ή να περιγράψετε αρχεία στο χώρο εργασίας αποκτώντας τα περιεχόμενα και το όνομα και χρησιμοποιώντας το API που περιγράφεται στην ενότητα Χρήση ειδών περιεχομένου, αν και δεν συνιστάται ως διαδικασία. Ο προσδιορισμός του είδους περιεχομένου με χρήση της μεθόδου IFile.getContentDescription() λαμβάνει υπόψη τις φύσεις έργου και τις ειδικές ρυθμίσεις έργου. Δεν θα πρέπει να μεταβαίνετε απευθείας στη λειτουργία διαχείρισης είδους περιεχομένου. Κυρίως, επειδή η ανάγνωση των περιεχομένων ενός αρχείου από το δίσκο είναι μια πολύ δαπανηρή διαδικασία. Η πρόσθετη λειτουργία πόρων διατηρεί μια λανθάνουσα μνήμη των περιγραφών περιεχομένου για αρχεία στο χώρο εργασίας. Αυτό μειώνει το κόστος περιγραφής περιεχομένου σε αποδεκτό επίπεδο.