Waarom BufferedReader
Gebufferd en ongebufferd lezen.
Waarom BufferedReader is een gratis Java Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 4 lessen.
Invoer lezen in Java
De meeste echte programma's hebben invoer van de gebruiker nodig: een naam, een getal of een opdracht. Java biedt verschillende manieren om invoer te lezen, maar een van de meest gebruikte en efficiënte is BufferedReader.
In deze les leer je waarom BufferedReader bestaat en wanneer je deze gebruikt.
Waar invoer vandaan komt
Wanneer je iets in een console typt, komt je tekst binnen via System.in. Dit is een laag-niveau-bytestroom — de stroom levert onbewerkte bytes, geen leesbare tekst.
Om die bytes om te zetten in leesbare tekens en volledige regels, wikkelen we System.in in hulpklassen. BufferedReader is de omhulling die dit eenvoudig maakt.
Wat 'gebufferd' betekent
Één byte tegelijk lezen van het toetsenbord of uit een bestand is traag. Een buffer is een geheugenblok waarin meerdere tekens tegelijk worden bewaard.
BufferedReader vult deze buffer in grote blokken en levert de gegevens daarna snel aan je. Minder toegangen tot de onderliggende stroom betekent betere prestaties, vooral bij grote invoer.
De opstelling met twee lagen
BufferedReader kan System.in niet rechtstreeks lezen, omdat die stroom bytes levert. Eerst wikkelen we de stroom in een InputStreamReader, die bytes omzet in tekens.
System.in→ bytesInputStreamReader→ tekensBufferedReader→ gebufferde regels
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);De klassieke eenregelige instructie
Deze exacte regel zie je in bijna elk Java-programma dat console-invoer leest. De regel koppelt beide omhullingen in één instructie.
Onthoud: de binnenste InputStreamReader verwerkt bytes naar tekens en de buitenste BufferedReader voegt buffering en de handige methode readLine() toe.
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));Vereiste imports
Deze klassen staan in het pakket java.io, dus je moet ze bovenaan je bestand importeren.
Het lezen van invoer kan mislukken, dus de methoden kunnen IOException opleveren — je moet die uitzondering ook importeren of afhandelen. Dat behandelen we later.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;BufferedReader versus Scanner
Beginners maken vaak eerst kennis met Scanner. Deze is gebruiksvriendelijker (je kunt er rechtstreeks getallen mee ontleden), maar trager.
- Scanner: eenvoudig ontleden, meer overhead.
- BufferedReader: sneller, leest volledige regels, maar je moet getallen zelf ontleden.
Bij grote invoer of programmeren voor wedstrijden is BufferedReader sneller.
Een volledige regel lezen
De belangrijkste methode is readLine(). Deze leest alles wat de gebruiker typt totdat die op Enter drukt en retourneert het als een String (zonder de regeleinde).
Als er geen invoer meer is, retourneert readLine() null. Dit onderzoeken we in de volgende les.
String name = br.readLine();
System.out.println("Hello, " + name);Een volledig leesprogramma
Hier is een volledig programma. Het leest één regel en begroet de gebruiker. Let op throws IOException bij main — een snelle manier om invoerfouten tijdens het leren naar boven door te geven.
Dit codefragment wacht op invoer van het toetsenbord, dus het kan hier niet automatisch worden uitgevoerd, maar het is geldige 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);
}
}Geen invoer nodig om de werking te bewijzen
Om te zien dat de omhullingen bestaan en compileren, volgt hier een uitvoerbare versie die niets leest — deze bevestigt alleen dat het object is aangemaakt.
In een echte toepassing zou je readLine() aanroepen, maar deze versie drukt een bericht af zodat je haar nu kunt uitvoeren.
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!");
}
}Wanneer gebruik je BufferedReader
Kies BufferedReader wanneer je:
- veel regels of grote bestanden leest,
- belang hecht aan snelheid,
- eenvoudige tekst regel voor regel wilt verwerken.
Gebruik in plaats daarvan Scanner wanneer je getallen snel wilt ontleden en de invoer klein is. Beide zijn geldig — kies het juiste hulpmiddel.
Korte controle
Controleer of je de opstelling met BufferedReader begrijpt.
Samenvatting
Je hebt geleerd dat System.in een bytestroom is, die eerst wordt omhuld door InputStreamReader (bytes naar tekens) en daarna door BufferedReader (buffering plus readLine()).
Buffering verbetert de prestaties en BufferedReader is bijzonder geschikt voor grote of regelgebaseerde invoer. Volgende stap: regels in detail lezen.
Leer Java met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 104
- Lessen
- 374
Veelgestelde vragen
Is de les “Waarom BufferedReader” gratis?
Ja — de volledige tekst van “Waarom BufferedReader” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 4 lessen.
Wat leer ik in “Waarom BufferedReader”?
Gebufferd en ongebufferd lezen. Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Java Academy te beginnen?
Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “Waarom BufferedReader”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Java Academy?
Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Waarom BufferedReader
- Regels lezen
- Getallen uit invoer parseren
- Streams veilig sluiten