next up previous contents index
suivant: Le pattern de décoration monter: Communications précédent: Tableaux d'octets   Table des matières   Index

Représentations textuelles

Les méthodes read et write sont les plus primitives. Il est généralement nécessaire, tant par commodité que par efficacité, de recourir à d'autres méthodes.

La plupart des données ont des représentations textuelles, qui sont humainement lisibles et sont donc distinctes des représentations en mémoire. La représentation textuelle d'un objet est obtenue par la méthode toString.

Pour écrire une représentation textuelle d'une donnée quelconque sur un flot d'octets, on invoque print ou println, qui ne sont définies que dans PrintStream, qui est une sous-classe de OutputStream. Si l'on veut imprimer ces représentations dans un fichier, on ne peut pas utiliser simplement FileOutputStream, car cette classe est dépourvue de ces méthodes d'impression. Comment faire pour disposer à la fois des fonctionnalités de PrintStream et de FileOutputStream ? Il n'est pas possible, en Java, de définir une classe qui soit sous-classe directe de deux classes : le mécanisme d'extension, souvent utilisé pour ajouter des fonctionnalités à une classe est ici insuffisant.

On peut par contre procéder par délégation : on construit une instance de PrintStream, qui délègue à une instance de FileOutputStream les écritures dans un fichier. L'objet délégué apparaît comme argument du constructeur de PrintStream ; l'argument true permet de vider automatiquement le tampon d'écriture à la fin des lignes :

  PrintStream out = 
    new PrintStream(                                // décorateur
      new FileOutputStream("out.txt"), true);       // délégué
  out.println(2);
  out.println(new Integer(2));



Sous-sections
next up previous contents index
suivant: Le pattern de décoration monter: Communications précédent: Tableaux d'octets   Table des matières   Index
Rene' LALEMENT 2002-11-07