Maîtriser Java BufferedReader : Gestion efficace des flux de caractères
Maîtriser Java BufferedReader : Gestion efficace des flux de caractères
La classe BufferedReader, du package java.io, encapsule un autre Reader pour fournir une entrée de caractères efficace. En lisant des blocs de données dans un tampon interne, elle minimise les coûteuses opérations d'E/S disque.
Comment fonctionne BufferedReader
En interne, BufferedReader maintient un tampon de 8 192 caractères (taille par défaut). Lors d'une lecture, un bloc de caractères est récupéré depuis le fichier source et stocké dans ce tampon. Les lectures suivantes extraient les caractères du tampon un par un, réduisant drastiquement les accès disque et accélérant les E/S.
Création d'un BufferedReader
Importez-le depuis java.io et encapsulez n'importe quelle implémentation de Reader, comme FileReader :
import java.io.FileReader;
import java.io.BufferedReader;
FileReader fichier = new FileReader("exemple.txt");
BufferedReader reader = new BufferedReader(fichier);
Vous pouvez aussi spécifier une taille de tampon personnalisée :
BufferedReader reader = new BufferedReader(fichier, 16384); // tampon 16 Ko
Méthodes principales de BufferedReader
read()
int read()– lit un seul caractère depuis le tamponint read(char[] cbuf)– lit des caractères dans le tableau fourniint read(char[] cbuf, int off, int len)– lit jusqu'à len caractères dans le tableau à partir de l'offset off
Exemple : lecture du contenu entier de input.txt dans un tableau de caractères :
import java.io.FileReader;
import java.io.BufferedReader;
class Main {
public static void main(String[] args) {
char[] tampon = new char[100];
try (FileReader fichier = new FileReader("input.txt");
BufferedReader reader = new BufferedReader(fichier)) {
reader.read(tampon);
System.out.println("Données dans le fichier :\n" + new String(tampon));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sortie
Données dans le fichier : Ceci est une ligne de texte dans le fichier.
skip()
skip(long n) ignore les n prochains caractères du flux :
reader.skip(5); // ignore "Ceci "
Après l'ignorance, la lecture du contenu restant donne :
Données après ignorance de 5 caractères : est une ligne de texte dans le fichier.
close()
Fermez toujours le reader pour libérer les ressources :
reader.close();
Autres méthodes utiles
| Méthode | Description |
|---|---|
ready() | Vérifie si le flux est prêt à être lu sans blocage |
mark(int readAheadLimit) | Marque la position courante dans le flux |
reset() | Réinitialise le flux à la marque la plus récente |
Pour une référence complète, visitez la documentation officielle Java.
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