Avant de lire les données à partir d'un fichier, il faut l'ouvrir à l'aide de
la classe FileInputStream
ou
la classe FileReader
Il existe une différence entre les deux classes FileInputStream et FileReader :
1. FileInputStream
permet de lire des bytes depuis un fichier
2. FileReader
permet de lire des caractères depuis un fichier
Dans ce cours on s'intéressera à la lecture de caractères, on utilisera donc la classe FileReader
Pour déclarer le fichier en lecture on peut utiliser une des deux méthodes :
1. 1ère méthode :
String filename = "somefile.txt";
FileReader in = new FileReader(filename);
2. 2ème méthode
FileReader in = new FileReader("data.txt");
Notez que les deux méthodes conduisent au même résultat.
La 1ère méthode a l'avantage de disposer d'une variable qui porte le nom du fichier. On peut donc envisager de demander le nom du fichier lors de l'exécution du programme.
On peut aussi utiliser l'objet File qui permet d'obtenir une représentation logique du fichier
File f = new File( "somefile.txt" );
FileReader in = new FileReader( f );
Avant d'écrire sur un fichier il faut l'ouvrir en écriture. On peut l'ouvrir à l'aide de
la classe FileOutputStream
ou
la classe FileWriter
Il existe une différence entre les deux classes FileOutputStream et FileWriter :
1. FileOutputStream
permet d'écrire des bytes dans un fichier
2. FileWriter
permet d'écrire des caractères dans un fichier
Dans ce cours on s'intéressera à l'écriture de caractères, on utilisera donc la classe FileWriter
Pour déclarer le fichier en écriture on peut utiliser l'une des deux méthodes
1ère méthode :
String filename = "resultat.txt";
FileWriter out = new FileWriter(filename);
2ème méthode :
FileWriter out = new FileWriter("resultat.txt");
Comme pour la lecture, ici aussi on peut constater que les deux méthodes conduisent au même résultat. L'avantage de la première est comme pour la lecture, on dispose d'une variable qui comporte le nom du fichier en sortie. On peut donc envisager de demander à l'utilisateur de préciser un nom de fichier lors de l'exécution.
On peut aussi utiliser l'objet File qui permet d'obtenir une représentation logique du fichier
File f = new File( "resultat.txt" );
FileWriter out = FileWriter( f );
Attention au chemin d'accès au fichier. Le fichier sera créé à l'endroit spécifié.
Si jamais le fichier existe déjà sous le même nom, il sera détruit avec les données qu'il contient déjà ! !
A l'issue d'une opération de lecture ou d'écriture dans un flux, il faut le fermer.
La fermeture d'un fichier libère les ressources allouées par le système pour sa gestion.
Pour cela il faut utiliser la méthode close du fichier en question
Exemple :
in.close();
La méthode close est disponible pour toutes les classes :
FileInputStream,
FileOutputStream,
FileReader
et FileWriter