English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java-Grundlagen-Tutorial

Java Flow Control

Java Array

Java Object-Oriented (I)

Java Object-Oriented (II)

Java Object-Oriented (III)

Java-Exception-Verarbeitung

Java List (List)

Java Queue (Queue)

Java Map Collection

Java Set Sammlung

Java Eingabe Ausgabe(I/)

Java Reader/Writer

Andere Themen von Java

Java InputStreamReader Klasse

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.

Erstellen Sie einen InputStreamReader

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.

Methoden von InputStreamReader

Die Klasse InputStreamReader bietet verschiedene Methodenimplementierungen, die in der Klasse Reader vorhanden sind.

read() Methode

  • 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().

Methode getEncoding()

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.

close()-Methode

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.

Andere Methoden von InputStreamReader

MethodeBeschreibung
ready()Überprüfen, ob der Datenstrom bereit ist, gelesen zu werden
mark()Position der bereits gelesenen Daten im Datenstrom markieren
reset()Markierungspunkt zurücksetzen