English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
La classe InputStreamReader fournit des implémentations de différentes méthodes existantes dans la classe Reader.
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().
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.
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.
Method | Description |
---|---|
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 |