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

Tutoriel de base Java

Java Flow Control

Java Array

Java Object-Oriented (I)

Java Object-Oriented (II)

Java Object-Oriented (III)

Gestion des exceptions Java

Java List

Java Queue (File d'attente)

Java Map Collection

Java Set collection

Java entrée-sortie (I/O)

Java Reader/Writer

Autres sujets Java

Classe Java InputStreamReader

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

La classe InputStreamReader du paquet java.io peut être utilisée pour convertir les données en octets en données en caractères.

Il hérite de la classe abstraite Reader.

La classe InputStreamReader travaille avec d'autres flux d'entrée. Elle est également appelée pont entre le flux d'octets et le flux de caractères. Car l'InputStreamReader lit les octets en tant que caractères à partir du flux d'entrée.

Par exemple, certains caractères nécessitent2un octet pour pouvoir être stocké dans la mémoire. Pour lire de tels données, nous pouvons utiliser un lecteur de flux d'entrée, qui lit ensemble2un octet et le convertir en le caractère correspondant.

crée un InputStreamReader

Pour créer un InputStreamReader, nous devons d'abord importer le paquet java.io.InputStreamReader. Après avoir importé le paquet, nous pouvons créer un lecteur de flux d'entrée.

//Créer un InputStream
FileInputStream file = new FileInputStream(String path);
//crée un InputStreamReader
InputStreamReader inputStreamReader = new InputStreamReader(file);

Dans l'exemple ci-dessus, nous avons créé un InputStreamReader nommé input et un FileInputStream nommé file.

Dans ce cas, les données du fichier sont stockées en utilisant un codage de caractères par défaut.

Mais nous pouvons également spécifier le type de codage des caractères dans le fichier (UTF8ouUTF16)

//Créer un InputStreamReader en spécifiant le codage des caractères
InputStreamReader input = new InputStreamReader(file, Charset cs);

Dans ce cas, nous utilisons la classe Charset pour spécifier le codage des caractères du fichier.

Méthodes de InputStreamReader

La classe InputStreamReader fournit des implémentations de différentes méthodes existantes dans la classe Reader.

Méthode read()

  • read() - Lit un caractère unique à partir du lecteur

  • read(char[] array) - Lit des caractères à partir du lecteur et les stocke dans le tableau spécifié.

  • read(char[] array, int start, int length) - Lit les caractères égaux à length à partir du lecteur et commence à les stocker dans le tableau spécifié.

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

Ceci est une ligne de texte à l'intérieur du fichier.

Essayons d'utiliser le lecteur InputStreamReader pour ce fichier.

import java.io.InputStreamReader;
import java.io.FileInputStream;
class Main {
  public static void main(String[] args) {
    //crée un tableau de caractères
    char[] array = new char[100];
    try {
      //crée un FileInputStream
      FileInputStream file = new FileInputStream("input.txt");
      //crée un InputStreamReader
      InputStreamReader inputStreamReader = new InputStreamReader(file);
      //lit des caractères à partir du fichier
      input.read(array);
      System.out.println("Les données du flux : ");
      System.out.println(array);
      //Close reader
      input.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Output result

les données du flux :
Ceci est une ligne de texte à l'intérieur du fichier.

Dans l'exemple ci-dessus, nous avons créé un lecteur de flux d'entrée à partir d'un flux d'entrée de fichier. Le lecteur de flux d'entrée est lié au fichierinput.txtliaison.

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

Pour lire des caractères à partir d'un fichier, nous utilisons la méthode read().

méthode getEncoding()

La méthode getEncoding() peut être utilisée pour obtenir le type de codage 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 {
      //crée un FileInputStream
      FileInputStream file = new FileInputStream("input.txt");
      //crée un InputStreamReader avec le codage par défaut
      InputStreamReader inputStreamReader1 InputStreamReader inputStreamReader = new InputStreamReader(file);
      //crée un InputStreamReader avec le codage spécifié
      InputStreamReader inputStreamReader2 InputStreamReader inputStreamReader = new InputStreamReader(file, Charset.forName("UTF8");
      //retourne le code de caractères du flux d'entrée
      System.out.println("input1du code de caractères : " + input1.getEncoding());
      System.out.println("input2du code de caractères : " + input2.getEncoding());
      //Close reader
      input1.close();
      input2.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Output result

input1character encoding: Cp1252
input2character encoding: UTF8

In the above example, we created two input stream readers, named input1and input2.

  • input1No character encoding specified. Therefore, the getEncoding() method returns the standard name of the default character encoding.

  • input2Specify character encodingUTF8. Therefore, the getEncoding() method returns the specified character encoding.

Note: We have used the Charset.forName() method to specify the type of character encoding.

close() method

To close the input stream reader, we can use the close() method. After calling this close() method, we will no longer be able to use the reader to read data.

Other methods of InputStreamReader

MethodDescription
ready()Check if the stream is ready to be read
mark()Mark the position of the data read in the stream
reset()Reset marker point