Il plugin org.eclipse.core.filesystem fornisce un'API generica per interagire con un filesystem. Questa API è simile a java.io.File, ma con alcune importanti differenze:
Nell'API del filesystem, il percorso per ogni determinato è rappresentato da un java.net.URI gerarchico. Lo schema URI rappresenta il tipo di filesystem e il componente percorso URI rappresenta l'ubicazione del file all'interno della struttura ad albero del filesystem. In tal modo, ogni determinato URI rappresenta un potenziale file oppure una directory in qualche filesystem arbitrario.
L'API per utilizzare i file e i filesystem si trova nel pacchetto org.eclipse.core.filesystem). Il tipo di API centrale è IFileStore Ciascuna istanza di IFileStore rappresenta un singolo file nel filesystem. Analogamente a IResource, l'esistenza di un'istanza IFileStore non significa che un file esiste sul disco. È possibile utilizzare un'istanza di IFileStore per creare, elimimare, copiare, spostare oppure aprire flussi su file. Per un determinato URI, è possibile acquisire un'istanza di IFileStore utilizzando il metodo statico EFS.getStore(URI)
L'interfaccia IFileSystem può essere utilizzata per scoprire cose sul filesystem nel suo complesso. Ciascuna istanza di IFileSystem rappresenta un singolo schema URI come, ad esempio, "file:", "ftp:" e così via. È possibile utilizzare questo tipo per formulare domande come: quali sono gli attributi file supportati o se il filesystem è sensibile al maiuscolo/minuscolo. È anche possibile utilizzare questo tipo per ottenere un IFileStore per un determinato URI.
La maggior parte dei metodi su IFileStore presentano un parametro flag che consente di fornire opzioni aggiuntive. I valorid flag possono essere trovati nella classe EFS. Ad esempio, per aprire un flusso di output da aggiungere a un file, utilizzare:
IFileStore store = ...//some file store store.openOutputStream(EFS.APPEND, null);
Se si desidera per un metodo la funzionalità predefinita, utilizzare EFS.NONE.
L'interfaccia IFileInfo rappresenta lo stato di un file in un particolare momento nel tempo. In particolare è possibile scoprire se il file esiste, se si tratta di una directory, quali sono i suoi attributi e così via. Queste informazioni possono essere modificare, quindi inserite di nuovo nel file. Ad esempio, di seguito veiene fornito un frammento di codice che imposta l'attributo di sola lettura su una directory:
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); }
Questo stile di API consente di ottenere e modificare le informazioni di file con una singola chiamata al filesystem. Nell'esempio di cui sopra, c'è solo una chiamata del filesystem per acquisire le informazioni, quindi è possibile eseguire tante operazioni quante se ne desiderano sull'oggetto IFileInfo senza accedere di nuovo al disco.
La classe EFS dispone di metodi factory statici per ottenere istanze di IFileStore e di IFileSystem, nonché varie costanti di opzioni e codici di errore.