Das Laufzeit-Plug-in der Plattform definiert eine Infrastruktur, über die Inhaltstypen für Datenstrom definiert und aufgespürt werden können. (Eine Übersicht des Inhaltsgerüsts finden Sie unter Inhaltstypen.) Ein wesentlicher Teil des Inhaltstypsystems ist die Fähigkeit, verschiedene Codierungen (Zeichensätze) für verschiedene Arten von Inhalten anzugeben. Die Ressourcen-API ermöglicht weiter die Erstellung von Standardzeichensätzen für Projekte, Ordner und Dateien. Diese Standardzeichensätze werden abgefragt, wenn die Datei selbst innerhalb ihres Datenstroms keine bestimmte Codierung definiert.
Unter Inhaltstypen wurde bereits dargestellt, dass standardmäßige Dateicodierungen für Inhaltstypen bestimmt werden können. Die Ressourcen-API bietet eine etwas differenzierte Steuerung.
IContainer definiert das Protokoll, über das der Standardzeichensatz für ein bestimmtes Projekt oder einen Ordner gesetzt wird. Hierdurch haben Plug-ins (und damit letztendlich auch der Benutzer) größere Freiheitsgrade bei der Bestimmung eines geeigneten Zeichensatzes für eine Gruppe von Dateien, sollten die Standardzeichensätze des Inhaltstyp nicht anwendbar sein.
IFile definiert die API, über die der Standardzeichensatz für eine bestimmte Datei gesetzt wird. Wird in den Dateiinhalten keine Codierung angegeben, so wird dieser Zeichensatz verwendet. Der Standardzeichensatz der Datei hat Vorrang vor Standardzeichensätzen, die im Ordner, Projekt oder Inhaltstyp der Datei angegeben sind.
Der Endbenutzer kann auf diese beiden Komponenten über die Eigenschaftenseite einer Ressource zugreifen.
IFile definiert außerdem API, über die der Zeichensatz einer Datei abgefragt werden kann. Eine Boolesche Markierung gibt an, ob nur der explizit für die Datei definierte Zeichensatz oder ein implizierter Zeichensatz zurückgegeben werden soll. Beispiel:
String charset = myFile.getCharset(false);
gibt "null" zurück, wenn kein Zeichensatz explizit für myFile gesetzt wurde. Aber:
String charset = myFile.getCharset(true);
überprüft zunächst, ob ein Zeichensatz explizit für die Datei gesetzt wurde. Wird keiner gefunden, so wird der Inhalt der Datei auf eine Beschreibung des Zeichensatzes überprüft. Wird auch hier nichts gefunden, so werden die übergeordneten Ordner und Projekte der Datei überprüft, ob hier ein Standardzeichensatz definiert ist. Wird selbst dort nichts gefunden, wird der Standardzeichensatz überprüft, der für den Inhaltstyp selbst definiert ist. In letzter Instanz wird der Standardzeichensatz der Plattform zurückgegeben, wenn keine andere Bestimmung eines Standardzeichensatzes gefunden werden konnte. Die Komfortmethode getCharset() unterscheidet sich nicht von der Verwendung von getCharset(true).
Für Dateien im Arbeitsbereich bietet IFile eine API, über die die folgende Dateiinhaltsbeschreibung abgerufen werden kann:
IFile file = ...; IContentDescription description = file.getDescription();
Diese API sollte auch dann verwendet werden, wenn Clients nur an der Bestimmung des Inhaltstyps interessiert sind - der Inhaltstyp lässt sich leicht aus der Inhaltsbeschreibung ableiten. Es ist auch möglich, durch Abruf der Inhalte, des Namens und anhand der unter Inhaltstypen verwenden beschriebenen API den Inhaltstyp von Dateien im Arbeitsbereich festzustellen, bzw. diese zu beschreiben. Hiervon wird jedoch abgeraten. Die Bestimmung des Inhaltstyps anhand von IFile.getContentDescription() berücksichtigt Projektgattungen und projektspezifische Einstellungen. Wenn Sie direkt den Inhaltstypmanager einsetzen, werden diese Parameter ignoriert. Noch wichtiger ist jedoch, dass das Lesen der Dateien vom Datenträger sehr kostenintensiv ist. Das Ressourcen-Plug-in pflegt einen Cachespeicher mit Inhaltsbeschreibungen für Dateien im Arbeitsbereich. Hierdurch werden die Kosten der Inhaltsbeschreibung auf ein annehmbares Niveau reduziert.