précédent | suivant | table des matières

InputStreamReader

La classe InputStreamReader établit un pont entre les flux d'octets et les flux de caractères. Cette classe permet de lire des octets et les traduit en caractères en utilisant un décodage spécifique. L'appel de la méthode read() d'un InputStreamReader va effectuer la lecture de 1 ou plusieurs octets.

Les constructeurs :

InputStreamReader(InputStream in) 
Crée un  InputStreamReader qui utilise le charset par défaut.
InputStreamReader(InputStream in, Charset cs) 
Crée un  InputStreamReader qui utilise le charset cs.
InputStreamReader(InputStream in, CharsetDecoder dec) 
Crée un  InputStreamReader qui utilise le charset Décodeur dec.
InputStreamReader(InputStream in, String nom) 
Crée un  InputStreamReader qui utilise le charset de nom nom.

Exemple :

try {
   FileInputStream fis = new FileInputStream("toto");
   InputStreamReader fr = new InputStreamReader(fis,"UTF-8");
   int c = fr.read();
   // en UTF-8 le premier octet indique le codage
   c = fr.read();
   while(c!=-1){
      System.out.print((char)c);
      c = fr.read();
   }
}catch (FileNotFoundException e){
   ... 
}catch (UnsupportedEncodingException e){
   ... 
}catch (IOException e) {
   ... 
}
Si le fichier contient les caractères suivant encodés en UTF-8 :
&é~"#èçà$ùµ€³¹·¨°¸÷§¶
alors il seront affichés correctement. En revanche, si on choisit l'encodage par défaut, fr = new InputStreamReader(fis),  alors on aura l'affichage suivant :
»¿&é~"#èçà$ùµ€³¹·¨°¸÷§¶

Une nouvelle méthode permet de retourner l'encodage du flux :

String getEncoding()
Retourne le nom de l'encodage utilisé par le flux.

haut de la page