Java InputStreamReader-Klasse
Java InputStreamReader-Klasse
In diesem Tutorial lernen wir Java InputStreamReader und seine Methoden anhand von Beispielen kennen.
Der InputStreamReader
Klasse der java.io
Paket kann verwendet werden, um Daten in Bytes in Daten in Zeichen umzuwandeln.
Es erweitert die abstrakte Klasse Reader
.
Die InputStreamReader
Klasse funktioniert mit anderen Eingabeströmen. Es ist auch als Brücke zwischen Byteströmen und Zeichenströmen bekannt. Das liegt daran, dass InputStreamReader
liest Bytes aus dem Eingabestrom als Zeichen.
Beispielsweise erforderten einige Zeichen 2 Bytes, um im Speicher gespeichert zu werden. Um solche Daten zu lesen, können wir den Input Stream Reader verwenden, der die 2 Bytes zusammen liest und in das entsprechende Zeichen umwandelt.
Einen InputStreamReader erstellen
Um einen InputStreamReader
zu erstellen , müssen wir den java.io.InputStreamReader
importieren Paket zuerst. Sobald wir das Paket importiert haben, können wir hier den Input-Stream-Reader erstellen.
// Creates an InputStream
FileInputStream file = new FileInputStream(String path);
// Creates an InputStreamReader
InputStreamReader input = new InputStreamReader(file);
Im obigen Beispiel haben wir einen InputStreamReader
erstellt mit dem Namen Eingabe zusammen mit dem FileInputStream
namens Datei .
Hier werden die Daten in der Datei unter Verwendung einer Standardzeichencodierung gespeichert.
Wir können jedoch die Art der Zeichenkodierung (UTF8 oder UTF16 ) auch in der Datei.
// Creates an InputStreamReader specifying the character encoding
InputStreamReader input = new InputStreamReader(file, Charset cs);
Hier haben wir den Charset
verwendet Klasse, um die Zeichencodierung in der Datei anzugeben.
Methoden von InputStreamReader
Die InputStreamReader
-Klasse stellt Implementierungen für verschiedene Methoden bereit, die in Reader
vorhanden sind Klasse.
read()-Methode
read()
- liest ein einzelnes Zeichen vom Lesegerätread(char[] array)
- liest die Zeichen aus dem Reader und speichert sie im angegebenen Arrayread(char[] array, int start, int length)
- liest die Anzahl der Zeichen gleich length vom Reader und speichert im angegebenen Array ab start
Angenommen, wir haben eine Datei mit dem Namen input.txt mit folgendem Inhalt.
This is a line of text inside the file.
Versuchen wir, diese Datei mit InputStreamReader
zu lesen .
import java.io.InputStreamReader;
import java.io.FileInputStream;
class Main {
public static void main(String[] args) {
// Creates an array of character
char[] array = new char[100];
try {
// Creates a FileInputStream
FileInputStream file = new FileInputStream("input.txt");
// Creates an InputStreamReader
InputStreamReader input = new InputStreamReader(file);
// Reads characters from the file
input.read(array);
System.out.println("Data in the stream:");
System.out.println(array);
// Closes the reader
input.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
Ausgabe
Data in the stream: This is a line of text inside the file.
Im obigen Beispiel haben wir einen Input-Stream-Reader mit dem Datei-Input-Stream erstellt. Der Input Stream Reader ist mit der Datei input.txt verknüpft .
FileInputStream file = new FileInputStream("input.txt");
InputStreamReader input = new InputStreamReader(file);
Um Zeichen aus der Datei zu lesen, haben wir den read()
verwendet Methode.
getEncoding()-Methode
Die getEncoding()
-Methode kann verwendet werden, um den Codierungstyp abzurufen, der zum Speichern von Daten im Eingabestream 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 {
// Creates a FileInputStream
FileInputStream file = new FileInputStream("input.txt");
// Creates an InputStreamReader with default encoding
InputStreamReader input1 = new InputStreamReader(file);
// Creates an InputStreamReader specifying the encoding
InputStreamReader input2 = new InputStreamReader(file, Charset.forName("UTF8"));
// Returns the character encoding of the input stream
System.out.println("Character encoding of input1: " + input1.getEncoding());
System.out.println("Character encoding of input2: " + input2.getEncoding());
// Closes the reader
input1.close();
input2.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
Ausgabe
The character encoding of input1: Cp1252 The character encoding of input2: UTF8
Im obigen Beispiel haben wir 2 Input-Stream-Reader mit dem Namen input1 erstellt und eingang2 .
- Eingabe1 gibt die Zeichenkodierung nicht an. Daher der
getEncoding()
-Methode gibt den kanonischen Namen der Standardzeichenkodierung zurück. - Eingabe2 gibt die Zeichenkodierung UTF8 an . Daher die
getEncoding()
Methode gibt die angegebene Zeichenkodierung zurück.
Hinweis :Wir haben den Charset.forName()
verwendet Methode, um die Art der Zeichencodierung anzugeben. Um mehr zu erfahren, besuchen Sie Java Charset (offizielle Java-Dokumentation).
close()-Methode
Um den Eingabestromleser zu schließen, können wir den close()
verwenden Methode. Einmal die close()
-Methode aufgerufen wird, können wir den Reader nicht zum Lesen der Daten verwenden.
Andere Methoden von InputStreamReader
Methode | Beschreibung |
---|---|
ready() | überprüft, ob der Stream zum Lesen bereit ist |
mark() | Markieren Sie die Position im Stream, bis zu der Daten gelesen wurden |
reset() | gibt die Steuerung an den Punkt im Stream zurück, an dem die Markierung gesetzt wurde |
Um mehr zu erfahren, besuchen Sie Java InputStreamReader (offizielle Java-Dokumentation).
Java