Dateisystem-API verwenden

Das Plug-in org.eclipse.core.filesystem stellt eine generische API für die Interaktion mit einem beliebigen Dateisystem zur Verfügung. Diese API hat im Wesentlichen Ähnlichkeit mit java.io.File, weist jedoch einige Unterschiede auf:

In der Dateisystem-API wird der Pfad für eine Datei jeweils als hierarchisches Element des Typs java.net.URI dargestellt. Das URI-Schema gibt den Typ des Dateisystems an, und der URI-Pfad stellt die Position der Datei in der Struktur des Dateisystems dar. Daher stellt jede hierarchische URI eine potenzielle Datei oder ein Verzeichnis in einem beliebigen Dateisystem dar.

Die API für das Arbeiten mit Dateien und Dateisystemen befindet sich im Paket org.eclipse.core.filesystem. Der zentrale API-Typ ist IFileStore. Jedes Exemplar von IFileStore stellt eine einzelne Datei im Dateisystem dar. Wie bei IResource bedeutet das Vorhandensein eines Exemplars von IFileStore nicht, dass eine solche Datei auf dem Datenträger vorhanden ist. Mit einem Exemplar von IFileStore können Sie Datenströme für Dateien erstellen, löschen, kopieren, versetzen oder öffnen. Bei einer bestimmten URI können Sie ein Exemplar von IFileStore anstelle der statischen Methode EFS.getStore(URI) verwenden.

Mit der Schnittstelle IFileSystem können Sie Angaben über das ganze Dateisystem ermitteln. Jedes Exemplar von IFileSystem stellt ein einzelnes URI-Schema wie "file:", "ftp:" usw. dar. Mit diesem Typ können Sie ermitteln, welche Dateiattribute unterstützt werden oder ob im Dateisystem die Groß-/Kleinschreibung beachtet werden muss. Außerdem können Sie diesen Typ verwenden, um ein Element IFileStore für eine bestimmte URI abzurufen.

Die meisten Methoden für IFileStore sind mit Attributparametern ausgestattet, über die zusätzliche Optionen angegeben werden können. Die Attributwerte sind in der Klasse EFS zu finden. Um beispielsweise einen Ausgabedatenstrom zum Anhängen an eine Datei zu öffnen, verwenden Sie die folgende Angabe:

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

Wenn Sie das Standardverhalten für eine Methode verwenden wollen, setzen Sie EFS.NONE ein.

Die Schnittstelle IFileInfo stellt den Status einer Datei zu einem bestimmten Zeitpunkt dar. Hiermit können Sie insbesondere ermitteln, ob eine Datei vorhanden ist, ob es sich um ein Verzeichnis handelt, wie die Attribute lauten usw. Diese Informationen können geändert und dann wieder in die Datei versetzt werden. Der folgende Ausschnitt legt beispielsweise das Schreibschutzattribut für ein Verzeichnis fest:

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

Mit diesem API-Typ können Sie Dateiinformationen in einem einzigen Aufruf des Dateisystems abrufen und ändern. Im obigen Beispiel gibt es nur einen Dateisystemaufruf, um die Informationen abzurufen. Anschließend können Sie so viele Operationen für das Objekt IFileInfo ausführen, wie Sie möchten, ohne den Datenträger erneut kontaktieren zu müssen.

Die Klasse EFS enthält statische Factorymethoden, um Exemplare von IFileStore und IFileSystem abzurufen, sowie verschiedene Optionskonstanten und Fehlercodes.