Pourquoi BufferedReader
Lectures avec ou sans tampon.
Pourquoi BufferedReader est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.
Lire les entrées en Java
La plupart des programmes réels ont besoin de l'entrée de l'utilisateur : un nom, un nombre ou une commande. Java propose plusieurs façons de lire les entrées, mais l'une des plus courantes et efficaces repose sur BufferedReader.
Dans cette leçon, vous apprendrez pourquoi BufferedReader existe et quand l'utiliser.
D'où viennent les entrées
Lorsque vous saisissez du texte dans une console, celui-ci arrive par System.in. Il s'agit d'un flux d'octets de bas niveau : il fournit des octets bruts, et non du texte lisible.
Pour transformer ces octets en caractères lisibles et en lignes complètes, nous encapsulons System.in dans des classes utilitaires. BufferedReader est l'enveloppe qui simplifie cette opération.
Ce que signifie « Buffered »
Lire un octet à la fois depuis le clavier ou un fichier est lent. Un tampon est une zone mémoire qui contient de nombreux caractères à la fois.
BufferedReader remplit ce tampon par gros blocs, puis vous fournit rapidement les données. Un nombre réduit d'accès au flux sous-jacent permet de meilleures performances, en particulier pour les gros volumes d'entrée.
La configuration à deux couches
BufferedReader ne peut pas lire directement System.in, car ce flux fournit des octets. Nous l'encapsulons d'abord dans un InputStreamReader, qui convertit les octets en caractères.
System.in→ octetsInputStreamReader→ caractèresBufferedReader→ lignes mises en tampon
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);L'instruction classique en une ligne
Vous verrez cette instruction exacte dans presque tous les programmes Java qui lisent des entrées depuis la console. Elle enchaîne les deux enveloppes dans une seule instruction.
Souvenez-vous-en : l'InputStreamReader interne gère la conversion des octets en caractères, tandis que le BufferedReader externe ajoute la mise en tampon ainsi que la méthode pratique readLine().
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));Importations nécessaires
Ces classes se trouvent dans le paquet java.io ; vous devez donc les importer au début de votre fichier.
La lecture des entrées peut échouer : les méthodes lèvent donc IOException — vous devrez également l'importer ou la gérer, ce que nous verrons plus tard.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;BufferedReader ou Scanner
Les débutants découvrent souvent Scanner en premier. Il est plus simple (il peut analyser directement les nombres), mais plus lent.
- Scanner : analyse facile, mais davantage de surcoût.
- BufferedReader : plus rapide, lit des lignes entières, mais vous devez analyser vous-même les nombres.
Pour les gros volumes d'entrée ou la programmation compétitive, BufferedReader est plus rapide.
Lire une ligne entière
La méthode essentielle est readLine(). Elle lit tout ce que l'utilisateur saisit jusqu'à ce qu'il appuie sur Entrée, puis le renvoie sous forme de String (sans le saut de ligne).
S'il n'y a plus d'entrée, readLine() renvoie null. Nous étudierons ce cas dans la prochaine leçon.
String name = br.readLine();
System.out.println("Hello, " + name);Un programme complet de lecture
Voici un programme complet. Il lit une ligne et salue l'utilisateur. Remarquez throws IOException sur main — c'est un moyen rapide de laisser remonter les erreurs d'entrée pendant l'apprentissage.
Cet extrait attend une saisie au clavier ; il ne peut donc pas être exécuté automatiquement ici, mais il s'agit bien de Java valide.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String name = br.readLine();
System.out.println("Hi " + name);
}
}Aucune entrée nécessaire pour vérifier le fonctionnement
Pour vérifier que les enveloppes existent et se compilent, voici une version exécutable qui ne lit rien — elle confirme simplement que l'objet a été créé.
Dans une vraie application, vous appelleriez readLine(), mais cette version affiche un message afin que vous puissiez l'exécuter dès maintenant.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.println("BufferedReader is ready!");
}
}Quand utiliser BufferedReader
Utilisez BufferedReader lorsque vous :
- lisez de nombreuses lignes ou de gros fichiers ;
- accordez de l'importance à la vitesse ;
- souhaitez traiter simplement du texte ligne par ligne.
Utilisez plutôt Scanner si vous voulez analyser rapidement des nombres et que le volume d'entrée est faible. Les deux conviennent : choisissez l'outil adapté.
Vérification rapide
Vérifiez votre compréhension de la configuration de BufferedReader.
Récapitulatif
Vous avez appris que System.in est un flux d'octets, encapsulé par InputStreamReader (des octets vers les caractères), puis par BufferedReader (mise en tampon et readLine()).
La mise en tampon améliore les performances, et BufferedReader est particulièrement adapté aux gros volumes d'entrée ou aux entrées organisées par ligne. Ensuite : lecture détaillée des lignes.
Questions Fréquemment Posées
La leçon « Pourquoi BufferedReader » est-elle gratuite ?
Oui — le texte complet de « Pourquoi BufferedReader » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Pourquoi BufferedReader » ?
Lectures avec ou sans tampon. Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Java Academy ?
Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Pourquoi BufferedReader » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?
Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi BufferedReader
- Lire des lignes
- Analyser des nombres saisis
- Fermer les flux en toute sécurité