Java InputStreamReader erklärt: Methoden, Encoding und praktische Beispiele
Java InputStreamReader erklärt
Entdecken Sie, wie Javas InputStreamReader Byte-Streams zu Character-Streams überbrückt, seine Kernmethoden und wie man Encoding korrekt handhabt.
Die InputStreamReader Klasse in java.io konvertiert rohe Bytes in Characters, was sie essenziell für das Lesen von Textdateien, Netzwerk-Streams oder jeder byte-basierten Quelle macht, die Characters repräsentiert.
Sie erweitert die abstrakte Reader Klasse und fungiert als Brücke zwischen Byte-Streams (z. B. FileInputStream) und Character-Streams.
Wenn ein Character mehrere Bytes erfordert – wie bei UTF-8 oder UTF-16 kodiertem Text – liest InputStreamReader diese Bytes zusammen und produziert den korrekten Character.
InputStreamReader erstellen
Beginnen Sie mit dem Import der notwendigen Klasse:
import java.io.InputStreamReader;
Typische Instanziierung verwendet einen FileInputStream als zugrundeliegende Byte-Quelle:
FileInputStream file = new FileInputStream("beispiel.txt");
InputStreamReader reader = new InputStreamReader(file);
Wenn Sie die Kodierung der Datei kennen, geben Sie sie an, um Fehlinterpretationen zu vermeiden:
InputStreamReader reader = new InputStreamReader(file, Charset.forName("UTF-8"));
Die Verwendung von Charset garantiert, dass der Reader Bytes mit dem beabsichtigten Character Set interpretiert.
Kernmethoden von InputStreamReader
read()
int read()– Liest ein einzelnes Character.int read(char[] cbuf)– Füllt ein Array mit Characters.int read(char[] cbuf, int off, int len)– Liest bis zulenCharacters incbufaboff.
Beispiel: Textdatei in ein Character-Array lesen.
import java.io.*;
class Main {
public static void main(String[] args) {
char[] buffer = new char[100];
try (FileInputStream file = new FileInputStream("input.txt");
InputStreamReader reader = new InputStreamReader(file)) {
reader.read(buffer);
System.out.println("Daten im Stream:\n" + new String(buffer));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ausgabe
Daten im Stream: This is a line of text inside the file.
getEncoding()
Rufen Sie die vom Reader verwendete Kodierung ab:
InputStreamReader defaultReader = new InputStreamReader(file);
InputStreamReader utf8Reader = new InputStreamReader(file, Charset.forName("UTF-8"));
System.out.println("Standard Encoding: " + defaultReader.getEncoding());
System.out.println("UTF-8 Encoding: " + utf8Reader.getEncoding());
Ausgabe
Standard Encoding: Cp1252 UTF-8 Encoding: UTF-8
Wenn keine Kodierung angegeben wird, gibt getEncoding() das plattformspezifische Default-Charset zurück.
Hinweis: Verwenden Sie Charset.forName() für explizite Encodings. Für mehr Details siehe Java Charset Dokumentation.
close()
Schließen Sie den Reader nach Gebrauch immer. Der try-with-resources Konstruktor oben handhabt dies automatisch, aber Sie können auch explizit reader.close() aufrufen.
Weitere nützliche Methoden
| Methode | Beschreibung |
|---|---|
ready() | Prüft, ob der Stream zum Lesen bereit ist. |
mark(int readAheadLimit) | Markiert die aktuelle Position für späteren Reset. |
reset() | Kehrt zur letzten markierten Position zurück. |
Für eine umfassende Referenz besuchen Sie die offizielle InputStreamReader Seite.
Java
- Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
- Java instanceof-Operator: Ein umfassender Leitfaden
- Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
- Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
- Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele
- Java Scanner meistern: Umfassender Leitfaden mit praktischen Beispielen
- Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen
- Java-Dateioperationen mit java.io meistern – Erstellen, Lesen, Schreiben & Löschen