Warum BufferedReader
Gepufferte und ungepufferte Lesevorgänge.
Warum BufferedReader ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Eingaben in Java lesen
Die meisten realen Programme benötigen Eingaben vom Benutzer: einen Namen, eine Zahl oder einen Befehl. Java bietet mehrere Möglichkeiten, Eingaben zu lesen. Eine der verbreitetsten und effizientesten ist BufferedReader.
In dieser Lektion lernen Sie, warum es BufferedReader gibt und wann Sie es einsetzen sollten.
Woher Eingaben kommen
Wenn Sie etwas in eine Konsole eingeben, fließt Ihr Text über System.in ein. Dabei handelt es sich um einen niedrigstufigen Byte-Stream — er liefert rohe Bytes und keinen lesbaren Text.
Um diese Bytes in lesbare Zeichen und vollständige Zeilen umzuwandeln, schließen wir System.in in Hilfsklassen ein. BufferedReader ist der Wrapper, der dies erleichtert.
Was „Buffered“ bedeutet
Ein Byte nach dem anderen von der Tastatur oder aus einer Datei zu lesen, ist langsam. Ein Puffer ist ein Speicherbereich, der viele Zeichen gleichzeitig aufnimmt.
BufferedReader füllt diesen Puffer in größeren Blöcken und liefert Ihnen die Daten anschließend schnell. Weniger Zugriffe auf den zugrunde liegenden Stream bedeuten eine bessere Leistung, besonders bei großen Eingabemengen.
Der Aufbau mit zwei Schichten
BufferedReader kann System.in nicht direkt lesen, weil dieser Stream Bytes liefert. Zuerst schließen wir ihn in einen InputStreamReader ein, der Bytes in Zeichen umwandelt.
System.in→ BytesInputStreamReader→ ZeichenBufferedReader→ gepufferte Zeilen
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);Die klassische Einzeile
Diese exakt gleiche Zeile sehen Sie in fast jedem Java-Programm, das Konsoleneingaben liest. Sie verknüpft beide Wrapper in einer einzigen Anweisung.
Denken Sie daran: Der innere InputStreamReader übernimmt die Umwandlung von Bytes in Zeichen, während der äußere BufferedReader zusätzlich zum Puffern die praktische Methode readLine() bereitstellt.
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));Benötigte Imports
Diese Klassen befinden sich im Paket java.io, daher müssen Sie sie am Anfang Ihrer Datei importieren.
Beim Lesen von Eingaben können Fehler auftreten, deshalb werfen die Methoden IOException — auch diese Klasse müssen Sie importieren oder behandeln. Das erklären wir später.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;BufferedReader vs. Scanner
Anfänger lernen oft zuerst Scanner kennen. Diese Klasse ist benutzerfreundlicher (sie kann Zahlen direkt parsen), aber langsamer.
- Scanner: einfaches Parsen, mehr Overhead.
- BufferedReader: schneller, liest ganze Zeilen, aber Sie müssen Zahlen selbst parsen.
Bei großen Eingabemengen oder beim Programmieren von Wettbewerbsaufgaben ist BufferedReader schneller.
Eine ganze Zeile lesen
Die wichtigste Methode ist readLine(). Sie liest alles, was der Benutzer eingibt, bis er die Eingabetaste drückt, und gibt es als String zurück (ohne den Zeilenumbruch).
Wenn keine weiteren Eingaben vorhanden sind, gibt readLine() null zurück. Das sehen wir uns in der nächsten Lektion genauer an.
String name = br.readLine();
System.out.println("Hello, " + name);Ein vollständiges Leseprogramm
Hier ist ein vollständiges Programm. Es liest eine Zeile und begrüßt den Benutzer. Beachten Sie throws IOException bei main — beim Lernen ist dies eine schnelle Möglichkeit, Eingabefehler nach außen weiterzugeben.
Dieses Snippet wartet auf eine Tastatureingabe und kann daher hier nicht automatisch ausgeführt werden, ist aber gültiges Java.
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);
}
}Kein Input nötig, um die Funktion zu beweisen
Um zu sehen, dass die Wrapper existieren und kompiliert werden können, finden Sie hier eine ausführbare Version, die nichts einliest — sie bestätigt lediglich, dass das Objekt erstellt wurde.
In einer echten Anwendung würden Sie readLine() aufrufen. Diese Version gibt jedoch eine Nachricht aus, damit Sie sie sofort ausführen können.
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!");
}
}Wann Sie BufferedReader verwenden sollten
Verwenden Sie BufferedReader, wenn Sie:
- viele Zeilen oder große Dateien lesen,
- Wert auf Geschwindigkeit legen,
- einfache zeilenweise Textverarbeitung benötigen.
Verwenden Sie stattdessen Scanner, wenn Sie schnell Zahlen parsen möchten und die Eingabe klein ist. Beide Möglichkeiten sind gültig — wählen Sie das passende Werkzeug.
Kurzer Test
Testen Sie Ihr Verständnis des Aufbaus von BufferedReader.
Zusammenfassung
Sie haben gelernt, dass System.in ein Byte-Stream ist, der zunächst von InputStreamReader (Bytes in Zeichen) und anschließend von BufferedReader (Pufferung plus readLine()) umschlossen wird.
Pufferung steigert die Leistung, und BufferedReader eignet sich besonders für große oder zeilenbasierte Eingaben. Als Nächstes lesen Sie Zeilen im Detail.
Häufig gestellte Fragen
Ist die Lektion „Warum BufferedReader“ kostenlos?
Ja — der vollständige Text von „Warum BufferedReader“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Warum BufferedReader“?
Gepufferte und ungepufferte Lesevorgänge. Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Java Academy zu starten?
Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Warum BufferedReader“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?
Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Warum BufferedReader
- Zeilen lesen
- Zahlen aus Eingaben parsen
- Streams sicher schließen