Dans ce didacticiel, nous allons découvrir Java InputStreamReader et ses méthodes à l'aide d'exemples.
La InputStreamReader
classe du java.io
package peut être utilisée pour convertir des données en octets en données en caractères.
Il étend la classe abstraite Reader
.
La InputStreamReader
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 en caractère correspondant.
Créer un InputStreamReader
Pour créer un InputStreamReader
, nous devons d'abord importer le java.io.InputStreamReader
package. 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 InputStreamReader
entrée nommée avec le FileInputStream
fichier 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 Charset
classe pour spécifier le codage des caractères dans le fichier.
Méthodes de InputStreamReader
La InputStreamReader
classe fournit des implémentations pour différentes méthodes présentes dans la Reader
classe.
read (), méthode
read()
- lit un seul caractère du lecteurread(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).