Java Reader-klasse: Subklassen, methoden en praktisch voorbeeld
Java Reader-klasse
Deze gids begeleidt je door Java's Reader-klasse, de kernsubklassen, essentiële methoden en een stapsgewijs voorbeeld met FileReader.
Wat is de Reader-klasse?
De Reader-klasse in het java.io-pakket is een abstracte superklasse die een karakter-input-stream vertegenwoordigt. Hoewel het niet direct geïnstantieerd kan worden, bieden de concrete subklassen de functionaliteit om tekstdata uit verschillende bronnen te lezen.
Veelvoorkomende subklassen van Reader
- BufferedReader – Voegt buffering toe voor efficiënt lezen van karakters, arrays en regels
- InputStreamReader – Brugt byte-streams naar karakter-streams met een gespecificeerd charset
- FileReader – Gemaksklasse voor het lezen van bestanden gecodeerd in het standaard-charset
- StringReader – Leest karakters uit een string als een stream
Een Reader instantiëren
Om een concrete reader aan te maken, importeer java.io.Reader en een van de subklassen. Bijvoorbeeld met FileReader:
import java.io.Reader;
import java.io.FileReader;
Reader input = new FileReader("input.txt");
Omdat Reader abstract is, moet je een subklasse gebruiken; anders ontstaat een compileerfout.
Tip: Je kunt elke andere subklasse op dezelfde manier instantiëren.
Kernmethoden van Reader
boolean ready()– Retourneerttrueals de stream klaar is om te lezen zonder te blokkerenint read(char[] cbuf)– Leest karakters in een array en retourneert het aantal gelezenint read(char[] cbuf, int off, int len)– Leest maximaallenkarakters incbufbeginnend bijoffvoid mark(int readAheadLimit)– Markeert de huidige positie in de streamvoid reset()– Herpositioneert de stream naar de laatste gemarkeerde positielong skip(long n)– Slaatnkarakters over en gooit ze weg
Voorbeeld: Een bestand lezen met FileReader
Stel we hebben een bestand input.txt met de inhoud:
Dit is een regel tekst in het bestand.
Hieronder een compleet, productie-klaar voorbeeld dat het bestand leest en de inhoud print:
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Main {
public static void main(String[] args) {
// Alloceer een buffer groot genoeg voor de verwachte inhoud
char[] buffer = new char[100];
// Gebruik try-with-resources om de reader automatisch te sluiten
try (Reader reader = new FileReader("input.txt")) {
System.out.println("Zit er data in de stream? " + reader.ready());
int karaktersGelezen = reader.read(buffer);
System.out.println("Data in de stream:\n" + new String(buffer, 0, karaktersGelezen));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output
Zit er data in de stream? true Data in de stream: Dit is een regel tekst in het bestand.
Belangrijkste punten:
- Sluit de reader altijd –
try-with-resourcesdoet dit automatisch - Gebruik
ready()om te verifiëren dat data beschikbaar is voordat je probeert te lezen - Behandel
IOExceptionvoor bestand-niet-gevonden of leesfout-scenario's
Voor meer gedetailleerde documentatie, bezoek de officiële Java Reader Javadoc.
Java
- Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
- Java instanceof operator: een uitgebreide gids
- Java-erfenis meesteren: concepten, typen en praktische voorbeelden
- Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
- Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
- Java ArrayList meesteren: operaties, methoden en best practices
- Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
- Java Generics: Herbruikbare, type-veilige code bouwen
- Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen