English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial lernen wir mit Beispielen den Java InputStreamReader und seine Methoden kennen.
Die Klasse InputStreamReader aus dem Paket java.io kann verwendet werden, um Byte-Daten in Zeichen-Daten umzuwandeln.
Erweitert die abstrakte Klasse Reader.
Die Klasse InputStreamReader arbeitet mit anderen Eingabestromen zusammen. Sie wird auch als Brücke zwischen Byte- und Zeichenstromen bezeichnet. Dies liegt daran, dass der InputStreamReader als Zeichen lesende Bytes aus dem Eingabestrom liest.
Zum Beispiel benötigen einige Zeichen2Bite, um in Speicher gespeichert zu werden. Um solche Daten zu lesen, können wir den Eingabestromleser verwenden, der gemeinsam liest2Bite und wandele sie in die entsprechenden Zeichen um.
Um einen InputStreamReader zu erstellen, müssen wir zunächst das Paket java.io.InputStreamReader importieren. Nach dem Importieren des Pakets können wir den Eingabestromleser erstellen.
//Erstelle einen InputStream FileInputStream file = new FileInputStream(String path); //Erstellen Sie einen InputStreamReader InputStreamReader input = new InputStreamReader(file);
Im obigen Beispiel haben wir einen InputStreamReader mit dem Namen input und einen FileInputStream mit dem Namen file erstellt.
Hier werden die Daten in der Datei mit einer bestimmten Standardzeichencodierung gespeichert.
Aber wir können auch die Art der Zeichencodierung in der Datei spezifizieren (UTF8oderUTF16)
//Erstelle einen InputStreamReader und spezifiziere die Zeichencodierung InputStreamReader input = new InputStreamReader(file, Charset cs);
Hier verwenden wir die Klasse Charset, um die Zeichencodierung der Datei zu spezifizieren.
Die Klasse InputStreamReader bietet verschiedene Methodenimplementierungen, die in der Klasse Reader vorhanden sind.
read() - Lese ein einzelnes Zeichen vom Reader aus.
read(char[] array) - Lese Zeichen vom Reader aus und speichere sie im angegebenen Array.
read(char[] array, int start, int length) - Lese die Zeichenanzahl equal length vom Reader aus und speichere sie ab dem start im angegebenen Array.
}}input.txtZum Beispiel,angenommen, wir haben eine Datei namens
Dies ist ein Textzeile innerhalb der Datei.
Lassen Sie uns versuchen, den FileReader für die Datei zu verwenden, die folgenden Inhalt enthält.
import java.io.InputStreamReader; import java.io.FileInputStream; class Main { public static void main(String[] args) { //Erstellen Sie ein Zeichendarstellung char[] array = new char[100]; try { //Erstellen Sie einen FileInputStream FileInputStream file = new FileInputStream("input.txt"); //Erstellen Sie einen InputStreamReader InputStreamReader input = new InputStreamReader(file); //Zeichen aus der Datei lesen input.read(array); System.out.println("Daten im Stream:"); System.out.println(array); //Reader schließen input.close(); } catch(Exception e) { e.getStackTrace(); } } }
Ausgaberesultat
Daten im Stream: Dies ist ein Textzeile innerhalb der Datei.
In diesem Beispiel haben wir einen InputStreamReader mit dem Datei-Eingabe-Stream erstellt. Der InputStreamReader ist mit den Daten im Stream verbunden.input.txtVerknüpfung.
FileInputStream file = new FileInputStream("input.txt"); InputStreamReader input = new InputStreamReader(file);
Um Zeichen aus einer Datei zu lesen, verwenden wir die Methode read().
Die Methode getEncoding() kann verwendet werden, um den Codierungstyp zu ermitteln, der für die Speicherung von Daten im Eingabe-Stream verwendet wird. Zum Beispiel,
import java.io.InputStreamReader; import java.nio.charset.Charset; import java.io.FileInputStream; class Main { public static void main(String[] args) { try { //erstellen Sie einen FileInputStream FileInputStream file = new FileInputStream("input.txt"); //erstellen Sie einen InputStreamReader mit der Standardkodierung InputStreamReader input1 = neue InputStreamReader(file); //erstellen Sie einen InputStreamReader mit angegebener Codierung InputStreamReader input2 neue InputStreamReader(file, Charset.forName("UTF8"); //gibt die Zeichencodierung des Eingabe-Streams zurück System.out.println("input1der Zeichencodierung: " + input1.getEncoding()); System.out.println("input2der Zeichencodierung: " + input2.getEncoding()); //Reader schließen input1.close(); input2.close(); } catch(Exception e) { e.getStackTrace(); } } }
Ausgaberesultat
input1haben, der Zeichensatzkodierung: Cp1252 input2haben, der Zeichensatzkodierung: UTF8
In dem obigen Beispiel haben wir zwei Leser für Eingabestrom gelegt, die beide den Namen input1und input2.
input1Es wurde keine Zeichensatzkodierung angegeben. Daher gibt die Methode getEncoding() den Standardnamen der Standardzeichensatzkodierung zurück.
input2Zeichensatz angebenUTF8. Daher gibt die Methode getEncoding() den angegebenen Zeichensatz zurück.
Hinweis: Wir haben die Art der Zeichensatzkodierung mit der Methode Charset.forName() angegeben.
Um den Leser des Eingabestroms zu schließen, können wir die close()-Methode verwenden. Nach dem Aufruf dieser Methode können wir den Leser nicht mehr zum Lesen von Daten verwenden.
Methode | Beschreibung |
---|---|
ready() | Überprüfen, ob der Datenstrom bereit ist, gelesen zu werden |
mark() | Position der bereits gelesenen Daten im Datenstrom markieren |
reset() | Markierungspunkt zurücksetzen |