Les entrées-sorties

Le concept de flux (stream)



Les flux en entrée



Flux de caractères
en lecture
Description du flux d'octets Flux d'octets en lecture
équivalent
Reader classe abstraite InputStream
BufferedReader lecture d'un flux de caractères au
travers d'un tampon
BuffererdInputStream
LineNumberReader traçage des numéros de lignes
d'un BufferedReader
LineNumberInputStream
CharArrayReader tableau de caractères utilisable en
flux de caractères en entrée
ByteArrayInputStream
InputStreamReader conversion d'un flux d'octets en
flux de caractères
 
FileReader conversion d'octets d'un fichier en
flux de caractères
FileInputStream
PushBackReader annulation de lecture PushBackInputStream
PipedReader tube (connection à un PipedWriter) PipedInputStream
StringReader stream en lecture associé à une chaîne StringBufferInputStream


- Reader est une classe abstraite orientée vers la lecture de caractères dans un flux.


Quelques-unes des méhodes de cette classe sont :

- La classe BufferedReader permet la lecture d'un flot de caractères avec un mécanisme de tampon afin d'améliorer les performances.

Elle est typiquement utilisée pour améliorer les performances offertes par les méthodes spécifiques des classes concrètes telles que FileReader ou InputStreamReaderqui étendent la classe abstraite reader.
C'est pourquoi elle possède un constructeur BufferedReader(Reader in)


Remarque pour les C-istes Unixiens : ce qui précède correspond à la possibilité d'associer, à un descripteur de fichier, un objet de type FILE par la fonction fdopen afin d'utiliser les fonctions de la bibliothèque standard plutôt que les fonctions de bas niveau (appels système).

Elle possède par ailleurs une méthode String readLine( ) permettant la lecture d'une ligne


- La classe FileReader est adaptée à la lecture de fichiers de caractères.
Elle dispose de différents constructeurs et en particulier FileReader(String nomDeFichier) pour l'instanciation à partir d'un nom de fichier.

Exemple : une version Java de la commande cat




   --> cat CatFichier.java
   import java.io.*;
   class CatFichier {
      public static void main (String[] arg) throws IOException{
         if (arg.length == 0){
            System.err.println("Erreur paramètres");
            System.exit(1);
            }
         BufferedReader fichier = new BufferedReader(new FileReader(arg[0]));   
         String str;
         str = fichier.readLine( );
         while (str != null){
              System.out.println(str);
              str = fichier.readLine( );
              }
      }
   }       
   --> java CatFichier
   Erreur paramètres
   --> cat tutu
   cat: tutu: cannot open [No such file or directory]
   --> java CatFichier tutu
   F:\JAVA\FLUX>java CatFichier tutu
   Exception in thread "main" java.io.FileNotFoundException: tutu
           at java.io.FileInputStream.open(Native Method)
           at java.io.FileInputStream.<init>(FileInputStream.java:103)
           at java.io.FileInputStream.<init>(FileInputStream.java:66)
           at java.io.FileReader.<init>(FileReader.java:39)
           at CatFichier.main(CatFichier.java:8)
   --> cat toto 
   ABCDEFGHIJKLM
   abcdefghijklmn
   0123456789     
   --> java CatFichier toto
   ABCDEFGHIJKLM
   abcdefghijklmn
   0123456789    
   --> 


Les flux en sortie



Flux de caractères Description Flux d'octets équivalent
Writer classe abstraite OutputStream
BufferedWriter   BuffererdOutputStream
 
CharArrayWriter   ByteArrayOutputStream
   
FileWriter conversion d'un flux de caractères dans un fichier FileOutputStream
 
PipedWriter   PipedOutputStream
StringWriter   StringBufferOutputStream

Writer est une classe abstraite orientée vers l'écriture de caractères dans un flux (write et close en sont les méthodes abstraites)


La méthodetoString




Dernière mise à jour : 20 juin 2005

Valid XHTML 1.0! Valid CSS!