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 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 à 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