Java InputStreamReader: Methoden, encoding en praktische voorbeelden
Java InputStreamReader uitgelegd
Ontdek hoe Java's InputStreamReader byte-streams brugt naar karakter-streams, de kernmethoden en hoe je encoding correct afhandelt.
Inleiding
De InputStreamReader-klasse in java.io converteert rauwe bytes naar karakters, wat essentieel is voor het lezen van tekstbestanden, netwerkstreams of elke byte-gebaseerde bron die karakters vertegenwoordigt.
Het breidt de abstracte Reader-klasse uit en fungeert als brug tussen byte-streams (bijv. FileInputStream) en karakter-streams.
Wanneer een karakter meerdere bytes vereist – zoals UTF-8 of UTF-16 gecodeerde tekst – leest InputStreamReader die bytes samen en produceert het correcte karakter.
Een InputStreamReader aanmaken
Begin met het importeren van de benodigde klasse:
import java.io.InputStreamReader;
Typische instantiatie gebruikt een FileInputStream als onderliggende byte-bron:
FileInputStream bestand = new FileInputStream("voorbeeld.txt");
InputStreamReader reader = new InputStreamReader(bestand);
Als je de encoding van het bestand kent, specificeer deze om misinterpretatie te voorkomen:
InputStreamReader reader = new InputStreamReader(bestand, Charset.forName("UTF-8"));
Het gebruik van Charset garandeert dat de reader bytes interpreteert met de beoogde karakterset.
Kernmethoden van InputStreamReader
read()
int read()– Leest een enkel karakterint read(char[] cbuf)– Vult een array met karaktersint read(char[] cbuf, int off, int len)– Leest maximaallenkarakters incbufbeginnend bijoff
Voorbeeld: Een tekstbestand inlezen in een karakterarray.
import java.io.*;
class Main {
public static void main(String[] args) {
char[] buffer = new char[100];
try (FileInputStream bestand = new FileInputStream("input.txt");
InputStreamReader reader = new InputStreamReader(bestand)) {
reader.read(buffer);
System.out.println("Data in de stream:\n" + new String(buffer));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output
Data in de stream: Dit is een regel tekst in het bestand.
getEncoding()
Haalt de encoding op die door de reader gebruikt wordt:
InputStreamReader standaardReader = new InputStreamReader(bestand);
InputStreamReader utf8Reader = new InputStreamReader(bestand, Charset.forName("UTF-8"));
System.out.println("Standaard encoding: " + standaardReader.getEncoding());
System.out.println("UTF-8 encoding: " + utf8Reader.getEncoding());
Output
Standaard encoding: Cp1252 UTF-8 encoding: UTF-8
Wanneer geen encoding gespecificeerd is, retourneert getEncoding() het platformstandaard-charset.
Let op: Gebruik Charset.forName() voor expliciete encodings. Zie de Java Charset-documentatie voor meer details.
close()
Sluit de reader altijd na gebruik. Het try-with-resources-construct hierboven doet dit automatisch, maar je kunt ook expliciet reader.close() aanroepen.
Overige nuttige methoden
| Methode | Beschrijving |
|---|---|
ready() | Controleert of de stream klaar is voor lezen |
mark(int readAheadLimit) | Markeert de huidige positie voor later resetten |
reset() | Keert terug naar de laatste gemarkeerde positie |
Voor een complete referentie, bezoek de officiële InputStreamReader-pagina.
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 ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
- Java Scanner: Uitgebreide gids met praktische voorbeelden
- Java Generics: Herbruikbare, type-veilige code bouwen
- Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen