14 10 Creation et lecture d'un fichier
Dans ce cours, nous consolidons la création et la lecture de fichiers en Java en utilisant les classes FileWriter et FileReader. Toutes deux héritent de la famille des classes de flux de caractères (Reader/Writer), pratiques pour manipuler du texte. Nous repartons d'une base propre en gardant uniquement la variable représentant le fichier cible.
Écrire un fichier avec FileWriter
La classe FileWriter propose plusieurs constructeurs. On peut lui passer directement un objet File représentant le fichier cible, ou simplement une String contenant son chemin. On commence par instancier le fichier, puis on construit un FileWriter dessus :
File fichier = new File("data.txt");
FileWriter writer = new FileWriter(fichier);
writer.write("Bonjour");
writer.flush();
writer.close();
La méthode flush() est importante : elle force l'écriture du contenu du tampon dans le fichier cible et libère le buffer, sans fermer définitivement le flux. close(), à la fin, ferme proprement le flux. Oublier de fermer le flux est une erreur fréquente qui peut laisser un fichier verrouillé ou des données non flushées.
Lire le fichier avec FileReader
Une fois le fichier écrit, on crée un FileReader qui prend en argument le fichier précédemment écrit. On déclare ensuite un tableau de caractères pour recevoir le contenu, on parcourt le flux pour lire chaque caractère et on l'affiche via System.out :
FileReader reader = new FileReader(fichier);
char[] buffer = new char[100];
reader.read(buffer);
System.out.println(buffer);
reader.close();
À la sortie, le contenu du fichier apparaît bien dans la console. Et une fois encore, on n'oublie pas de fermer le flux. Avec ce schéma FileWriter → flush → close côté écriture, et FileReader → read → close côté lecture, on dispose d'une base solide pour manipuler des fichiers texte en Java. À bientôt pour la suite.
En résumé
Cette leçon explique comment créer et lire des fichiers en Java en utilisant les classes FileReader et FileWriter. Ces classes héritent de InputStream/OutputStream et offrent plusieurs constructeurs pour gérer les fichiers via un objet File ou un chemin String. La leçon détaille l'utilisation des méthodes flush() pour envoyer le buffer à la destination et close() pour fermer définitivement le flux.
Points clés
- FileReader et FileWriter héritent des classes parentes InputStream et OutputStream pour gérer les flux de fichier
- Les constructeurs acceptent deux formes de paramètres : un objet File ou une chaîne (String) représentant le chemin du fichier
- La méthode flush() écrit le contenu du buffer vers la destination sans fermer le flux de façon permanente
- La méthode close() ferme définitivement le flux et libère les ressources système
- Il est crucial de toujours fermer le flux après utilisation pour éviter les fuites de ressources
Questions fréquentes
Quelle est la différence entre flush() et close() ?
flush() envoie le contenu du buffer à la destination mais laisse le flux ouvert et utilisable. close() ferme le flux de manière permanente et libère les ressources système.
Quels types de paramètres acceptent les constructeurs de FileReader et FileWriter ?
Ils acceptent deux formes : un objet File représentant le fichier, ou une String contenant le chemin d'accès au fichier.
Pourquoi faut-il toujours fermer le flux ?
Fermer le flux avec close() libère les ressources système (descripteurs de fichier, mémoire) associées à la lecture ou écriture du fichier, évitant ainsi les fuites de ressources.