Insticksprogrammet för plattformens runtime-miljö definierar infrastrukturen för definiering och upptäckt av innehållstyper för dataströmmar. (I Innehållstyper finns en översikt över innehållsramverket.) En viktig del av systemet med innehållstyper är möjligheten att ange olika kodningar (teckentabeller) för olika typer av innehåll. Resurs-APIt ger också möjlighet att ange standardteckentabeller för projekt, mappar och filer. De här standardteckentabellerna utnyttjas om inte innehållet i själva filen definierar en viss kodning i sin dataström.
I Innehållstyper såg vi att standardfilkodningar kan anges för innehållstyper. Genom resurs-APIt går det att utföra en mer detaljerad styrning.
I IContainer definieras protokoll för inställning av standardteckentabeller för vissa projekt eller mappar. På så sätt får insticksprogrammet (och i sista hand användaren) större möjligheter att bestämma en lämplig teckentabell för en uppsättning filer när standardteckentabellerna från innehållstypen kanske inte är tillämpliga.
I IFile definieras API för inställning av standardteckentabell för en viss fil. Om ingen kodning har angetts i filinnehållet kommer den här teckentabellen att användas. Filens standardteckentabell har företräde framför eventuella standardteckentabeller som har angetts i filens mapp, projekt eller innehållstyp.
Båda de här funktionerna är tillgängliga för slutanvändaren på egenskapssidan för en resurs.
I IFile definieras också ett API för att köra frågor mot teckenuppsättningen för en fil. En boolesk flagga anger om endast den teckentabell som har definierats explicit för filen ska returneras eller om en underförstådd teckentabell ska returneras. Exempel:
String charset = myFile.getCharset(false);
returnerar null om ingen teckentabell har angetts explicit för myFile. Däremot gäller följande:
String charset = myFile.getCharset(true);
innebär att en sökning först görs efter en teckentabell som har angetts explicit för filen. Om ingen sådan hittas kommer innehållet i filen att genomsökas efter en beskrivning av teckentabellen. Om ingen sådan hittas kommer de mappar och projekt som ingår i filen att genomsökas efter en standardteckentabell. Om ingen sådan hittas kommer en sökning att göras i den standardteckentabell som har definierats för själva innehållstypen. Slutligen kommer plattformens standardteckentabell att returneras om det inte finns någon annan standardteckentabell. Metoden getCharset() motsvarar getCharset(true).
För filer på arbetsytan tillhandahåller IFile ett API för att hämta en beskrivning av filinnehållet:
IFile file = ...; IContentDescription description = file.getDescription();
Det här APIt ska användas även om klienter endast vill fastställa innehållstypen. Innehållstypen kan enkelt hämtas från innehållsbeskrivningen. Det går att upptäcka innehållstypen eller beskriva filer på arbetsytan genom att hämta innehållet och namnet, och genom att använda det API som beskrivs i Använda innehållstyper, men det rekommenderas inte. Vid fastställande av innehållstyp med hjälp av IFile.getContentDescription() tas hänsyn till projektnaturer och projektspecifika inställningar. Om du går direkt till innehållstyphanteraren tar du inte hänsyn till dem. Men framför allt är det mycket dyrt att läsa filinnehåll från disken. Insticksprogrammet för resursen har en cache av innehållsbeskrivningar för filer på arbetsytan. På så sätt minskar kostnaderna för innehållsbeskrivningar.