De bestandssysteem-API gebruiken

De plugin org.eclipse.core.filesystem biedt een generieke API om interactief te werken met een willekeurig bestandssysteem. Deze API is vergelijkbaar met java.io.File, maar met een paar belangrijke verschillen:

In de bestandssysteem-API wordt het pad voor een willekeurig bestand vertegenwoordigd als een hiėrarchische java.net.URI. Het URI-schema vertegenwoordigt het soort bestandssysteem, en de URI-padcomponent vertegenwoordigt de locatie van het bestand binnen de bestandssysteemstructuur. Een willekeurige hiėrarchische URI vertegenwoordigt dus een mogelijk bestand of een mogelijke directory in een willekeurig bestandssysteem.

De API voor het werken met bestanden en bestandssystemen bevindt zich in het org.eclipse.core.filesystem)-pakket. Het centrale API-type is IFileStore. Elke instance van IFileStore vertegenwoordigt een enkel bestand in het bestandssysteem. Net als bij IResource betekent het bestaan van een IFileStore-instance niet dat een dergelijk bestand op schijf bestaat. U kunt een IFileStore-instance gebruiken om stromen in bestanden te maken, te verwijderen, te kopiėren of te openen. Voor een bepaalde URI kunt u een IFileStore-instance in handen krijgen met behulp van de statische methode EFS.getStore(URI).

De interface IFileSystem kan worden gebruikt om dingen over het bestandssysteem als een geheel te weten te komen. Elke IFileSystem-instance vertegenwoordigt een enkel URI-schema, zoals "file:", "ftp:", enzovoort. U kunt dit type gebruiken om vragen te stellen als welke bestandskenmerken ondersteund worden en of het bestandssysteem hoofdlettergevoelig is. U kunt dit type ook gebruiken om een IFileStore voor een bepaalde URI te verkrijgen.

De meeste methoden in IFileStore hebben een vlagparameter waarmee extra opties kunnen worden opgegeven. De vlagwaarden bevinden zich in de klasse EFS. Als u bijvoorbeeld een uitvoerstroom wilt openen om deze aan een bestand toe te voegen, gebruikt u:

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

Als u het standaardgedrag voor een methode wilt, gebruikt u EFS.NONE.

De interface IFileInfo vertegenwoordigt de status van een bestand op een specifiek moment. Meer in het bijzonder, u kunt te weten komen of het bestand bestaat, of het een directory is, wat de kenmerken ervan zijn, enzovoort. Deze informatie kan worden gewijzigd en vervolgens weer in het bestand worden ingesteld. Dit is bijvoorbeeld een snippet waarmee het kenmerk 'alleen lezen' in een directory wordt ingesteld:

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

Met dit type API kunt u met een enkele aanroep van het bestandssysteem bestandgegevens ophalen en wijzigen. In het bovenstaande voorbeeld is er slechts één aan te roepen bestandssysteem om de gegevens op te halen, waarna u zo veel bewerkingen als u wilt kunt uitvoeren in het IFileInfo-object zonder nogmaals de schijf te hoeven raadplegen.

De klasse EFS heeft statische factormethoden voor het verkrijgen van de instances van IFileStore en IFileSystem, evenals verscheidene optieconstanten en foutcodes.