Page d'accueilFindIt !ContactLes outils JavaLes accès au réseau

La bibliothèque JavaTM 1.0

Table des matièresHierarchie des classes

CJava

 La gestion des fichiers
et des flux de données

Gestion des entrées-sorties
Manipulation des fichiers
Gestion des flux de données
Accès à un flux de données en lecture
Accès à un flux de données en écriture
Gestion de l'accès aléatoire aux fichiers

 

Ce chapitre décrit le package java.io de Java 1.0 qui rassemble les classes permettant de manipuler les fichiers et de gérer les entrées-sorties.

Gestion des entrées-sorties

En observant la hiérarchie des classes de Java, vous serez peut-être étonné par le nombre de classes dévolues à la gestion des entrées-sorties (package java.io), et particulièrement celles de gestion des flux de données (stream). Ne vous inquiétez pas : une fois que vous aurez cerner le principe de fonctionnement de la gestion des flux de données, vous verrez que toutes les classes dérivant des classes InputStream et OutputStream s'utilisent de manière intuitive.

Mode d'accès aux données

Comme dans la plupart des langages informatiques, Java permet de manipuler les fichiers soit en accès par flux de données (Stream), soit en accès aléatoire (Random access) :

Manipulation des fichiers

Java permet de manipuler les fichiers situés sur le système local (par opposition à ceux auquel on accède via une URL), grâce à l'interface FilenameFilter et les classes File et FileDescriptor. On peut ajouter à cette liste la classe java.awt.FileDialog, qui permet de choisir interactivement un fichier avec une boite de dialogue.

L'interface java.io.FilenameFilter

Cette interface est utilisée pour permettre d'accepter ou de rejeter un fichier issu d'une liste. Une instance d'une classe implémentant cette interface est requise par les méthodes list () de la classe File et setFilenameFilter () de la classe FileDialog.

Méthode
public boolean accept (File dir, String name)

Cette méthode doit renvoyer true si le fichier name se trouvant dans le répertoire dir est accepté.

La classe java.io.File

Cette classe est utilisée pour représenter un chemin d'accès au système de fichiers local et effectuer des opérations sur celui-ci (autorisation d'accès en lecture/écriture, liste des fichiers d'un répertoire,...). Ce chemin d'accès peut désigner un fichier ou un répertoire.
Les méthodes de cette classe peuvent éventuellement déclencher une exception SecurityException, si le gestionnaire de sécurité actif leur interdit d'être exécutée. Les applets fonctionnant dans un navigateur empêchent généralement notamment tout accès au système de fichiers local donc n'imaginez pas une applet qui puisse accéder aux fichiers du système dans ce contexte.
La description des chemins d'accès (séparateurs, description des disques,...) utilise les conventions du système sur lequel est exécutée la Machine Virtuelle.

Champs
public static final String separator
public static final char separatorChar

La chaîne ou le caractère utilisé comme séparateur de fichier (égal généralement à / ou \).

public static final String pathSeparator
public static final char pathSeparatorChar

La chaîne ou le caractère utilisé comme séparateur de plusieurs chemins d'accès (égal généralement à ; ou :).

Constructeurs
public File (String path)

Construit une instance de la classe File, à partir d'un chemin d'accès path pouvant être absolu ou relatif au répertoire courant. path peut représenter un répertoire ou un fichier suivant l'utilisation que vous voulez faire de cette nouvelle instance.

public File (String dir, String name)
public File (File dir, String name)

Ces constructeurs permettent de créer une instance de la classe File, à partir d'un répertoire dir (chemin d'accès absolu ou relatif au répertoire courant), et d'un nom de fichier ou de répertoire name accessible à partir du répertoire dir.

Méthodes
public String getName ()

Renvoie le nom du fichier ou du répertoire d'un chemin d'accès.

public String getPath ()

Renvoie le chemin d'accès d'un objet de classe File.

public String getAbsolutePath ()

Renvoie le chemin d'accès absolu.

public String getParent ()

Renvoie le chemin d'accès du répertoire parent au chemin d'accès de l'objet de classe File, ou null s'il n'existe pas.

public boolean exists () throws SecurityException
public boolean isFile () throws SecurityException
public boolean isDirectory () throws SecurityException
public boolean isAbsolute ()

Ces méthodes renvoient true, si le chemin d'accès existe, s'il correspond à un fichier ou à un répertoire, ou si le chemin d'accès est absolu.

public boolean canRead () throws SecurityException
public boolean canWrite () throws SecurityException

Ces méthodes renvoient true, si le chemin d'accès est accessible en lecture ou en écriture.

public long lastModified () throws SecurityException

Renvoie la date de dernière modification du fichier. Cette date n'étant pas exprimé dans la même échelle que celle utilisée par la classe Date, elle ne peut être utilisée que pour comparer des dates de différents fichiers.

public long length () throws SecurityException

Renvoie la taille du chemin d'accès représentant un fichier.

public boolean delete () throws SecurityException
public boolean renameTo (File dest) throws SecurityException

Ces méthodes permettent de supprimer ou de renommer un chemin d'accès, et renvoient true si l'opération s'est effectuée correctement.

public boolean mkdir () throws SecurityException
public boolean mkdirs () throws SecurityException

Ces méthodes permettent de créer le répertoire ou les répertoires représentés par le chemin d'accès et renvoient true si l'opération s'est effectuée correctement.

public String [ ] list () throws SecurityException
public String [ ] list (FilenameFilter filter) throws SecurityException

Ces méthodes renvoient un tableau de chaînes de caractères dont les éléments sont les fichiers et les répertoires contenus dans le répertoire représenté par un chemin d'accès. Les répertoires . et .. sont exclus de cette liste.
La seconde méthode permet d'appliquer le filtre filter pour ne récupérer que les fichiers et les répertoires autorisés par la méthode accept () de la classe de l'objet filter implémentant l'interface FilenameFilter.

public int hashCode ()
public boolean equals (Object obj)
public String toString ()

Ces méthodes outrepassent celles de la classe Object, pour renvoyer un code de hash, comparer un chemin d'accès à un objet ou renvoyer une chaîne de caractères égale au chemin d'accès.

La classe java.io.FileDescriptor

Cette classe final représente un descripteur de fichier. Une instance de cette classe permet de manipuler un fichier ouvert ou l'entrée et les sorties standards.
Les méthodes getFD () des classes FileInputStream, FileOutputStream et RandomAccessFile permettent d'obtenir une instance de la classe FileDescriptor et les champs static in, out et err permettant de manipuler l'entrée standard, la sortie standard et la sortie standard d'erreurs sont de cette classe.

Champs
public static final FileDescriptor in
public static final FileDescriptor out
public static final FileDescriptor err

Ces champs représentent l'entrée standard, la sortie standard ou la sortie standard des erreurs. Les champs de même nom de la classe System sont construits à partir de ces champs.
Vous pouvez les utiliser pour accéder à l'entrée et les sorties standards avec d'autres classes de gestion des flux de données.

Constructeur
public FileDescriptor ()
Méthodes
public boolean valid ()
 

Gestion des flux de données

En Java, les classes dévolues aux flux de données permettent d'accéder aux données soit en lecture grâce aux classes qui dérivent de la classe abstract InputStream, soit en écriture grâce aux classes qui dérivent de la classe abstract OutputStream.

A chaque type de flux de données (fichier, chaîne de caractères, tableau d'octets, pipeline) correspond une classe permettant de le manipuler, mais il existe aussi un ensemble de classes de filtres dérivées des classes abstract FilterInputStream et FilterOutputStream qui peuvent s'utiliser ensemble pour simplifier ou optimiser l'accès aux flux.

Accès à un flux de données en lecture

L'accès en lecture à un flux de données s'effectue grâce aux classes qui dérivent de la classe InputStream. Ces classes se divisent en deux catégories :

Accès à un flux de données en écriture

Gestion de l'accès aléatoire aux fichiers

Java fournit la classe RandomAccessFile pour accéder aléatoirement au contenu d'un fichier en lecture ou en écriture (voir aussi le début de ce chapitre).

La classe java.io.RandomAccessFile


Page d'accueilFindIt !ContactLes outils JavaLes accès au réseauDébut de la page
© Copyrights 1997-2023 Emmanuel PUYBARET / eTeks
- Tous droits réservés -
Table des matièresHiérarchie des classes