Alternative à BufferedReader
Lecture plus rapide dans la console
Alternative à BufferedReader est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Un lecteur plus rapide
Scanner est pratique, mais relativement lent pour les grandes entrées. Pour les lectures en grande quantité, BufferedReader de java.io est beaucoup plus rapide, car il lit de gros blocs en une seule fois.
Créer un BufferedReader
Placez un InputStreamReader autour de System.in, lui-même placé dans un BufferedReader. Nous utilisons ici un StringReader afin que les exemples s'exécutent sans saisie au clavier.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("Hello"));
System.out.println(reader.readLine());
reader.close();
}
}readLine renvoie une String
readLine() lit une ligne entière sous la forme d'une String, sans le terminateur de ligne. Contrairement à Scanner, elle renvoie toujours du texte : vous devez donc analyser vous-même les nombres.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("first\nsecond"));
System.out.println(reader.readLine());
System.out.println(reader.readLine());
reader.close();
}
}La fin de l'entrée renvoie une valeur nulle
Lorsqu'il n'y a plus d'entrée, readLine() renvoie null. C'est le signal qui indique qu'il faut arrêter la lecture.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("one line"));
System.out.println(reader.readLine());
System.out.println(reader.readLine());
reader.close();
}
}Lire toutes les lignes
Répétez la boucle tant que readLine() n'est pas null afin de traiter chaque ligne de l'entrée.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("a\nb\nc"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println("> " + line);
}
reader.close();
}
}Analyser soi-même les nombres
Comme readLine fournit du texte, convertissez-le avec Integer.parseInt lorsque vous avez besoin d'un nombre.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("42"));
int n = Integer.parseInt(reader.readLine().trim());
System.out.println(n * 2);
reader.close();
}
}Découper une ligne en jetons
Pour lire plusieurs nombres sur une même ligne, découpez-la avec split, puis analysez chaque morceau.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new StringReader("10 20 30"));
String[] parts = reader.readLine().split(" ");
int sum = 0;
for (String p : parts) {
sum += Integer.parseInt(p);
}
System.out.println(sum);
reader.close();
}
}Exceptions vérifiées
readLine déclare une IOException vérifiée. Vous devez donc soit déclarer throws IOException, soit placer l'appel dans un try-catch. Scanner ne l'exige pas.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new StringReader("data"));
System.out.println(reader.readLine());
reader.close();
} catch (IOException e) {
System.out.println("Read error");
}
}
}Try-With-Resources
Utilisez try-with-resources afin que le lecteur soit automatiquement fermé, même si une exception se produit.
import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
try (BufferedReader reader = new BufferedReader(new StringReader("auto-closed"))) {
System.out.println(reader.readLine());
}
}
}Un véritable exemple avec System.in
Pour lire réellement au clavier, placez System.in dans un lecteur. Exécutez ce programme localement, saisissez une ligne, puis appuyez sur Entrée.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter text: ");
String input = reader.readLine();
System.out.println("You typed: " + input);
}
}Scanner ou BufferedReader
Choisissez Scanner pour sa simplicité et l'analyse facile des nombres. Choisissez BufferedReader pour sa rapidité avec les grandes entrées, en acceptant d'analyser vous-même les données et de gérer IOException.
Vérification rapide
Vérifiez vos connaissances sur BufferedReader.
Récapitulatif
Vous avez découvert l'alternative BufferedReader :
- Placez
System.indans unInputStreamReader, puis dans unBufferedReader readLine()renvoie une ligne entière, ounullà la fin de l'entrée- Analysez vous-même les nombres avec
Integer.parseIntetsplit - Cette méthode déclenche une
IOExceptionvérifiée : vous devez donc la gérer ou la déclarer - Préférez-la à Scanner pour les grandes entrées où les performances sont essentielles
Questions Fréquemment Posées
La leçon « Alternative à BufferedReader » est-elle gratuite ?
Oui — le texte complet de « Alternative à 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 « Alternative à BufferedReader » ?
Lecture plus rapide dans la console 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 4 sur 4.
Combien de temps prend la leçon « Alternative à 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
- Lire la saisie avec Scanner
- Lire des nombres et des lignes
- Valider la saisie de l’utilisateur
- Alternative à BufferedReader