Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Classe Java InputStreamReader

Classe Java InputStreamReader

Dans ce didacticiel, nous allons découvrir Java InputStreamReader et ses méthodes à l'aide d'exemples.

Le InputStreamReader classe du java.io package peut être utilisé pour convertir des données en octets en données en caractères.

Il étend la classe abstraite Reader .

Le InputStreamReader la classe fonctionne avec d'autres flux d'entrée. Il est également connu comme un pont entre les flux d'octets et les flux de caractères. C'est parce que le InputStreamReader lit les octets du flux d'entrée sous forme de caractères.

Par exemple, certains caractères nécessitaient 2 octets pour être stockés dans le stockage. Pour lire ces données, nous pouvons utiliser le lecteur de flux d'entrée qui lit les 2 octets ensemble et les convertit dans le caractère correspondant.

Créer un InputStreamReader

Afin de créer un InputStreamReader , il faut importer le java.io.InputStreamReader paquet d'abord. Une fois que nous avons importé le package, voici comment nous pouvons créer le lecteur de flux d'entrée.

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

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

Dans l'exemple ci-dessus, nous avons créé un InputStreamReader nommée entrée avec le FileInputStream nommé fichier .

Ici, les données du fichier sont stockées à l'aide d'un encodage de caractères par défaut.

Cependant, nous pouvons spécifier le type d'encodage des caractères (UTF8 ou UTF16 ) dans le fichier également.

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

Ici, nous avons utilisé le Charset class pour spécifier l'encodage des caractères dans le fichier.

Méthodes de InputStreamReader

Le InputStreamReader la classe fournit des implémentations pour différentes méthodes présentes dans le Reader classe.

méthode read()

  • read() - lit un seul caractère du lecteur
  • read(char[] array) - lit les caractères du lecteur et les stocke dans le tableau spécifié
  • read(char[] array, int start, int length) - lit le nombre de caractères égal à longueur du lecteur et stocke dans le tableau spécifié à partir du début

Par exemple, supposons que nous ayons un fichier nommé input.txt avec le contenu suivant.

This is a line of text inside the file.

Essayons de lire ce fichier en utilisant 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();
    }
  }
}

Sortie

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

Dans l'exemple ci-dessus, nous avons créé un lecteur de flux d'entrée en utilisant le flux d'entrée de fichier. Le lecteur de flux d'entrée est lié au fichier input.txt .

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

Pour lire les caractères du fichier, nous avons utilisé le read() méthode.

méthode getEncoding()

Le getEncoding() peut être utilisée pour obtenir le type d'encodage utilisé pour stocker les données dans le flux d'entrée. Par exemple,

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

Sortie

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

Dans l'exemple ci-dessus, nous avons créé 2 lecteurs de flux d'entrée nommés input1 et entrée2 .

  • entrée1 ne spécifie pas le codage des caractères. D'où le getEncoding() renvoie le nom canonique de l'encodage de caractères par défaut.
  • entrée2 spécifie le codage des caractères, UTF8 . D'où le getEncoding() renvoie l'encodage de caractères spécifié.

Remarque :Nous avons utilisé le Charset.forName() méthode pour spécifier le type d'encodage de caractères. Pour en savoir plus, visitez Java Charset (documentation officielle de Java).

Méthode close()

Pour fermer le lecteur de flux d'entrée, nous pouvons utiliser le close() méthode. Une fois le close() est appelée, nous ne pouvons pas utiliser le lecteur pour lire les données.

Autres méthodes de InputStreamReader

Méthode Description
ready() vérifie si le flux est prêt à être lu
mark() marquer la position dans le flux jusqu'à laquelle les données ont été lues
reset() renvoie le contrôle au point du flux où la marque a été définie

Pour en savoir plus, visitez Java InputStreamReader (documentation officielle de Java).


Java

  1. Mot-clé Java final
  2. Opérateur instanceof Java
  3. Classe statique imbriquée Java
  4. Classe anonyme Java
  5. Classe Java Singleton
  6. Réflexion Java
  7. Classe Java ObjectOutputStream
  8. Classe d'analyseur Java
  9. Génériques Java