Le plug-in org.eclipse.core.filesystem fournit une API générique capable d'interagir avec un système de fichiers arbitraire. Cette API est similaire à java.io.File, à quelques différences près :
Dans l'API de système de fichiers, le chemin d'accès d'un fichier est représenté sous forme d'adresse java.net.URI hiérarchique. Le schéma d'URI représente le type de système de fichiers, et le composant du chemin d'URI représente l'emplacement du fichier dans l'arborescence du système de fichiers. Ainsi, tout URI hiérarchique représente un fichier ou répertoire potentiel dans un système de fichiers arbitraire.
L'API permettant d'utiliser les fichiers et les systèmes de fichier se trouve dans le package org.eclipse.core.filesystem). Le type d'API central est IFileStore Chaque instance de IFileStore représente un fichier dans le système de fichiers. Comme pour IResource, l'existence d'une instance IFileStore ne signifie pas que ce fichier réside sur le disque. Vous pouvez utiliser une instance IFileStore pour créer, supprimer, copier, déplacer ou ouvrir des flux sur les fichiers. Pour un URI donné, vous pouvez accéder à l'instance IFileStore à l'aide de la méthode statique EFS.getStore(URI)
L'interface IFileSystem permet de découvrir des éléments relatifs au système de fichiers dans son ensemble. Chaque instance IFileSystem représente un schéma d'URI unique, par exemple, "file:", "ftp:", etc. Vous pouvez utiliser ce type pour poser des questions telles que le type d'attribut de fichier pris en charge ou si le système de fichiers est dépendant maj/min. Vous pouvez également utiliser ce type pour obtenir une instance IFileStore pour un URI donné.
La plupart des méthodes sur IFileStore ont un paramètre indicateur qui permet de disposer d'options supplémentaires. Les valeurs d'indicateur se trouvent dans la classe EFS. Par exemple, pour ouvrir un flux de sortie pour l'ajout dans un fichier, utilisez la syntaxe suivante :
IFileStore store = ...//un magasin de fichiers store.openOutputStream(EFS.APPEND, null);
Pour utiliser le comportement par défaut d'une méthode, utilisezEFS.NONE.
L'interface IFileInfo représente l'état d'un fichier à un moment spécifique. Notamment, vous pouvez déterminer si le fichier existe, s'il réside dans un répertoire, le type d'attribut, etc. Ces informations peuvent être modifiées, puis redéfinies dans le fichier. Par exemple, ci-dessous figure un fragment définissant l'attribut de lecture et écriture sur un répertoire :
IFileStore store = ...//un magasin de fichiers IFileInfo info = store.fetchInfo(); if (info.exists() && info.isDirectory()) { info.setAttribute(EFS.ATTRIBUTE_READ_ONLY, true); store.putInfo(info, EFS.SET_ATTRIBUTES, null); }
Ce style d'API vous permet d'obtenir et de modifier les informations de fichier au moyen d'un seul appel au système de fichiers. Dans l'exemple ci-dessus, un seul appel au système de fichiers est nécessaire pour rechercher les informations. Vous pouvez ensuite effectuer autant d'opérations que vous le souhaitez sur l'objet IFileInfo sans toucher à nouveau au disque.
La classe EFS possède des méthodes de fabrique statique visant à extraire les instances IFileStore et IFileSystem, ainsi que diverses constantes d'option et différents codes d'erreur.