Java Academy · Les

Alternatief met BufferedReader

Sneller lezen van de console

Les 4 van 413 stappen

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.in in InputStreamReader en vervolgens in BufferedReader
  • readLine() geeft een volledige regel terug, of null aan het einde van de invoer
  • Parseer getallen zelf met Integer.parseInt en split
  • De methode veroorzaakt een gecontroleerde IOException, dus handel die af of declareer die
  • Gebruik deze klasse liever dan Scanner voor grote, prestatiekritieke invoer
Gratis beginnen

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

  1. Invoer lezen met Scanner
  2. Getallen en regels lezen
  3. Gebruikersinvoer valideren
  4. Alternatief met BufferedReader
← Terug naar Java Academy