Alternatief met BufferedReader
Sneller lezen van de console
Alternatief met BufferedReader is een gratis Java Academy-les op CoddyKit. Dit is les 4 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.
Een snellere lezer
Scanner is handig, maar relatief langzaam voor grote hoeveelheden invoer. Voor het lezen van grote hoeveelheden is BufferedReader uit java.io veel sneller, omdat deze klasse telkens grote blokken leest.
Een BufferedReader maken
Wikkel een InputStreamReader rond System.in en plaats die binnen een BufferedReader. Hier gebruiken we een StringReader, zodat de voorbeelden zonder getypte invoer kunnen worden uitgevoerd.
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 geeft een String terug
readLine() leest één volledige regel als een String, zonder het regeleinde. In tegenstelling tot Scanner geeft deze methode altijd tekst terug, dus je moet getallen zelf parseren.
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();
}
}Het einde van de invoer is null
Wanneer er geen invoer meer is, geeft readLine() null terug. Dat is het signaal om te stoppen met lezen.
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();
}
}Alle regels lezen
Herhaal zolang readLine() niet null is om elke invoerregel te verwerken.
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();
}
}Getallen zelf parseren
Omdat readLine tekst teruggeeft, zet je die met Integer.parseInt om wanneer je een getal nodig hebt.
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();
}
}Een regel in tokens splitsen
Als je meerdere getallen uit één regel wilt lezen, splits je de regel met split en parseer je elk onderdeel.
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();
}
}Gecontroleerde uitzonderingen
readLine declareert een gecontroleerde IOException. Je moet daarom óf throws IOException declareren óf de aanroep in een try-catch plaatsen. Voor Scanner is dit niet nodig.
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
Gebruik try-with-resources, zodat de lezer automatisch wordt gesloten, ook wanneer er een uitzondering optreedt.
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());
}
}
}Een echt System.in-voorbeeld
Voor echte toetsenbordinvoer wikkel je System.in in. Voer dit lokaal uit, typ een regel en druk vervolgens op Enter.
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 tegenover BufferedReader
Kies Scanner voor gebruiksgemak en eenvoudig parseren van getallen. Kies BufferedReader voor snelheid bij grote hoeveelheden invoer, waarbij je het parseren zelf uitvoert en IOException zelf afhandelt.
Korte controle
Toets je kennis van BufferedReader.
Samenvatting
Je hebt het alternatief met BufferedReader geleerd:
- Wikkel
System.ininInputStreamReaderen vervolgens inBufferedReader readLine()geeft een volledige regel terug, ofnullaan het einde van de invoer- Parseer getallen zelf met
Integer.parseIntensplit - De methode veroorzaakt een gecontroleerde
IOException, dus handel die af of declareer die - Gebruik deze klasse liever dan Scanner voor grote, prestatiekritieke invoer
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 “Alternatief met BufferedReader” gratis?
Ja — de volledige tekst van “Alternatief met 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 “Alternatief met BufferedReader”?
Sneller lezen van de console 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 4 van 4.
Hoe lang duurt de les “Alternatief met 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
- Invoer lezen met Scanner
- Getallen en regels lezen
- Gebruikersinvoer valideren
- Alternatief met BufferedReader