Maîtriser la classe Reader de Java : Sous-classes, méthodes et exemple pratique
Maîtriser la classe Reader de Java : Sous-classes, méthodes et exemple pratique
Qu'est-ce que la classe Reader ?
La classe Reader du package java.io est une superclasse abstraite représentant un flux d'entrée de caractères. Bien qu'elle ne puisse pas être instanciée directement, ses sous-classes concrètes fournissent les fonctionnalités pour lire des données textuelles depuis diverses sources.
Sous-classes courantes de Reader
- BufferedReader – Ajoute une mise en tampon pour la lecture efficace de caractères, tableaux et lignes
- InputStreamReader – Fait le pont entre flux d'octets et flux de caractères avec un jeu de caractères spécifié
- FileReader – Classe de commodité pour lire des fichiers encodés dans le jeu de caractères par défaut
- StringReader – Lit des caractères depuis une chaîne comme un flux
Nous approfondirons chaque sous-classe dans des tutoriels dédiés.
Instanciation d'un Reader
Pour créer un lecteur concret, importez java.io.Reader et l'une de ses sous-classes. Par exemple avec FileReader :
import java.io.Reader;
import java.io.FileReader;
Reader input = new FileReader("input.txt");
Comme Reader est abstraite, vous devez utiliser une sous-classe ; sinon, une erreur de compilation survient.
Astuce : Vous pouvez instancier n'importe quelle autre sous-classe de la même manière.
Méthodes principales fournies par Reader
boolean ready()– Renvoietruesi le flux est prêt à être lu sans blocageint read(char[] cbuf)– Lit des caractères dans un tableau, renvoie le nombre luint read(char[] cbuf, int off, int len)– Lit jusqu'àlencaractères danscbufà partir deoffvoid mark(int readAheadLimit)– Marque la position courante dans le fluxvoid reset()– Repositionne le flux à la dernière position marquéelong skip(long n)– Ignore et sautencaractères
Exemple : Lecture d'un fichier avec FileReader
Supposons un fichier input.txt contenant :
Ceci est une ligne de texte dans le fichier.
Exemple complet, prêt pour la production, lisant le fichier et affichant son contenu :
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Main {
public static void main(String[] args) {
// Tampon assez grand pour le contenu attendu
char[] tampon = new char[100];
// try-with-resources pour fermeture automatique
try (Reader reader = new FileReader("input.txt")) {
System.out.println("Y a-t-il des données dans le flux ? " + reader.ready());
int caracteresLus = reader.read(tampon);
System.out.println("Données dans le flux :\n" + new String(tampon, 0, caracteresLus));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Sortie
Y a-t-il des données dans le flux ? true Données dans le flux : Ceci est une ligne de texte dans le fichier.
Points clés :
- Fermez toujours le reader —
try-with-resourcesle gère automatiquement - Utilisez
ready()pour vérifier la disponibilité des données avant lecture - Gérez
IOExceptionpour couvrir les scénarios fichier introuvable ou erreur de lecture
Pour la documentation détaillée, visitez le Javadoc Reader officiel.
Java
- Comprendre le mot-clé final en Java : variables, méthodes et classes
- L'opérateur instanceof en Java : guide complet
- Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
- Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
- Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
- Maîtriser les génériques Java : Construire du code réutilisable et type-safe
- Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression