Java InputStreamReader (avec des exemples)

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

La InputStreamReaderclasse du java.iopackage peut être utilisée pour convertir des données en octets en données en caractères.

Il étend la classe abstraite Reader.

La InputStreamReaderclasse 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 InputStreamReaderlit 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 en caractère correspondant.

Créer un InputStreamReader

Pour créer un InputStreamReader, nous devons d'abord importer le java.io.InputStreamReaderpackage. Une fois que nous avons importé le package, voici comment 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éé une InputStreamReaderentrée nommée avec le FileInputStreamfichier nommé.

Ici, les données du fichier sont stockées en utilisant un encodage de caractères par défaut.

Cependant, nous pouvons également spécifier le type de codage de caractères ( UTF8 ou UTF16 ) dans le fichier.

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

Ici, nous avons utilisé la Charsetclasse pour spécifier le codage des caractères dans le fichier.

Méthodes de InputStreamReader

La InputStreamReaderclasse fournit des implémentations pour différentes méthodes présentes dans la Readerclasse.

read (), méthode

  • 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 à la 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(); ) ) ) 

Production

 Données dans le flux: il s'agit d'une ligne de texte à l'intérieur du fichier. 

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é la read()méthode.

getEncoding (), méthode

La getEncoding()méthode 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(); ) ) ) 

Production

 Le codage de caractères de input1: Cp1252 Le codage de caractères de input2: UTF8 

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

  • input1 ne spécifie pas le codage des caractères. Par conséquent, la getEncoding()méthode renvoie le nom canonique du codage de caractères par défaut.
  • input2 spécifie le codage des caractères, UTF8 . Par conséquent, la getEncoding()méthode renvoie le codage de caractères spécifié.

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

close (), méthode

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

Autres méthodes d'InputStreamReader

Méthode La 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 Java officielle).

Articles intéressants...