Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java InputStreamReader-klasse

Java InputStreamReader-klasse

In deze zelfstudie leren we over Java InputStreamReader en zijn methoden met behulp van voorbeelden.

De InputStreamReader klasse van de java.io pakket kan worden gebruikt om gegevens in bytes om te zetten in gegevens in tekens.

Het breidt de abstracte klasse Reader uit .

De InputStreamReader class werkt met andere invoerstromen. Het is ook bekend als een brug tussen bytestreams en karakterstreams. Dit komt omdat de InputStreamReader leest bytes uit de invoerstroom als tekens.

Voor sommige tekens was bijvoorbeeld 2 bytes nodig om in de opslag te worden opgeslagen. Om dergelijke gegevens te lezen, kunnen we de invoerstroomlezer gebruiken die de 2 bytes samen leest en omzet in het bijbehorende teken.


Maak een InputStreamReader

Om een ​​InputStreamReader . aan te maken , moeten we de java.io.InputStreamReader . importeren pakket eerst. Zodra we het pakket hebben geïmporteerd, kunnen we hier de invoerstroomlezer maken.

// Creates an InputStream
FileInputStream file = new FileInputStream(String path);

// Creates an InputStreamReader
InputStreamReader input = new InputStreamReader(file);

In het bovenstaande voorbeeld hebben we een InputStreamReader . gemaakt genaamd invoer samen met de FileInputStream genaamd bestand .

Hier worden de gegevens in het bestand opgeslagen met behulp van een standaard tekencodering.

We kunnen echter het type tekencodering specificeren (UTF8 of UTF16 ) ook in het bestand.

// Creates an InputStreamReader specifying the character encoding
InputStreamReader input = new InputStreamReader(file, Charset cs);

Hier hebben we de Charset . gebruikt class om de tekencodering in het bestand op te geven.


Methoden van InputStreamReader

De InputStreamReader class biedt implementaties voor verschillende methoden die aanwezig zijn in de Reader klasse.

read()-methode

  • read() - leest een enkel karakter van de lezer
  • read(char[] array) - leest de tekens uit de lezer en slaat ze op in de opgegeven array
  • read(char[] array, int start, int length) - leest het aantal tekens gelijk aan lengte van de lezer en slaat op in de opgegeven array vanaf de start

Stel dat we bijvoorbeeld een bestand hebben met de naam input.txt met de volgende inhoud.

This is a line of text inside the file.

Laten we proberen dit bestand te lezen met InputStreamReader .

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();
    }
  }
}

Uitvoer

Data in the stream:
This is a line of text inside the file.

In het bovenstaande voorbeeld hebben we een invoerstroomlezer gemaakt met behulp van de bestandsinvoerstroom. De invoerstroomlezer is gekoppeld aan het bestand input.txt .

 FileInputStream file = new FileInputStream("input.txt");
 InputStreamReader input = new InputStreamReader(file);

Om tekens uit het bestand te lezen, hebben we de read() . gebruikt methode.


getEncoding()-methode

De getEncoding() methode kan worden gebruikt om het type codering te krijgen dat wordt gebruikt om gegevens in de invoerstroom op te slaan. Bijvoorbeeld,

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();
    }
  }
}

Uitvoer

The character encoding of input1: Cp1252
The character encoding of input2: UTF8

In het bovenstaande voorbeeld hebben we 2 invoerstroomlezers gemaakt met de naam input1 en invoer2 .

  • invoer1 specificeert niet de tekencodering. Vandaar de getEncoding() methode retourneert de canonieke naam van de standaard tekencodering.
  • invoer2 specificeert de tekencodering, UTF8 . Vandaar de getEncoding() methode retourneert de opgegeven tekencodering.

Opmerking :We hebben de Charset.forName() . gebruikt methode om het type tekencodering op te geven. Ga voor meer informatie naar Java Charset (officiële Java-documentatie).


close()-methode

Om de invoerstroomlezer te sluiten, kunnen we de close() . gebruiken methode. Zodra de close() methode wordt aangeroepen, kunnen we de lezer niet gebruiken om de gegevens te lezen.


Andere methoden van InputStreamReader

Methode Beschrijving
ready() controleert of de stream klaar is om gelezen te worden
mark() markeer de positie in de stream tot waar gegevens zijn gelezen
reset() geeft de besturing terug naar het punt in de stream waar de markering was ingesteld

Ga voor meer informatie naar Java InputStreamReader (officiële Java-documentatie).


Java

  1. Java laatste trefwoord
  2. Java-instantie van Operator
  3. Java-erfenis
  4. Java geneste statische klasse
  5. Java anonieme klasse
  6. Java Singleton-klasse
  7. Java-reflectie
  8. Java ObjectOutputStream-klasse
  9. Java-scannerklasse
  10. Java-generieken
  11. Java-bestandsklasse