Använda filsystems-API:t

Insticksprogrammet org.eclipse.core.filesystem har ett generiskt API för interaktion med ett slumpmässigt filsystem. Det här API:t liknar java.io.File med några viktiga skillnader:

I filsystems-API:t representeras sökvägen för en fil som en hierarkisk java.net.URI. URI-schemat representerar typen av filsystem och URI-sökvägskomponenten representerar platsen för filen i filsystemträdet. Alltså representerar en hierarkisk URI-adress en potentiell fil eller katalog i ett slumpmässigt filsystem.

API:t för arbete med filer och filsystem finns i paketet org.eclipse.core.filesystem). Den centrala API-typen är IFileStore. Varje förekomst av IFileStore representerar en enstaka fil i filsystemet. Precis som med IResource innebär inte förekomsten av IFileStore att en sådan fil finns på hårddisken. Du kan använda IFileStore-förekomsten till att skapa, ta bort, kopiera, flytta eller öppna strömmar för filer. För en viss URI kan du få åtkomst till en IFileStore-förekomst med hjälp av den statiska metoden EFS.getStore(URI)

IFileSystem-gränssnittet kan användas till att ta reda på övergripande saker om filsystemet. Varje IFileSystem-förekomst representerar ett enda URI-schema, till exempel "file:" eller "ftp:". Du kan använda den här typen till att ställa frågor, till exempel vilka filattribut som kan användas eller om filsystemet är skiftlägeskänsligt. Du kan också använda den här typen till att hämta en IFileStore för en viss URI.

De flesta metoderna för IFileStore har en flaggparameter som gör det möjligt att tillhandahålla fler alternativ. Flaggvärdena finns i EFS-klassen. Om du till exempel vill öppna en utdataström för tillägg till en fil använder du:

	IFileStore store = ...//ett fillager
	store.openOutputStream(EFS.APPEND, null);

Om du vill ange standardfunktionen för en metod använder du EFS.NONE.

IFileInfo-gränssnittet representerar status för en fil vid en viss tidpunkt. I synnerhet kan du ta reda på om filen existerar, om den finns i en katalog, vad attributen för den är osv. Den här informationen kan ändras och sedan sparas i filen. Exempel: Här är ett kodstycke som används till att ange skrivskyddsattributet för en katalog:

	IFileStore store = ...//ett fillager
	IFileInfo info = store.fetchInfo();
	if (info.exists() && info.isDirectory()) {
		info.setAttribute(EFS.ATTRIBUTE_READ_ONLY, true);
		store.putInfo(info, EFS.SET_ATTRIBUTES, null);
	}

I den här typen av API kan du hämta och ändra filinformation med ett enda anrop till filsystemet. I det ovanstående exemplet krävs det endast ett filsystemsanrop för att hämta informationen och sedan kan du utföra så många åtgärder du vill för IFileInfo-objektet utan att någon information lagras på hårddisken igen.

Klassen EFS har statiska fabriksmetoder för hämtning av IFileStore- och IFileSystem-förekomster och olika alternativkonstanter och felkoder.