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

PipedInputStream

Une instance de la classe PipedInputStream doit être connectée à un objet PipedOutputStream.

Les données sont lues à partir d'un objet PipedInputStream par un thread et les données sont écrites dans l'objet PipedOutputStream correspondant par un autre thread. On parle de pipe.

1 Constructeurs :

PipedInputStream ()
Crée un PipedInputStream non connecté à un PipedOutputStream.
PipedInputStream (PipedOutputStream pos)
Crée un PipedInputStream connecté à pos.

2 Les méthodes

Les méthodes sont les méthodes héritées de InputStream plus la méthode connect :

void connect (PipedOutputStream pos)
Connecte le PipedInputStream à pos. Lève une IOException si le PipedInputStream est déjà connecté.

3 Exemple :

public class Sortie extends Thread {
   PipedOutputStream sortie;
   DataOutputStream s;
   public Sortie(PipedOutputStream sortie) {<
      super();
      this.sortie = sortie;
      s = new DataOutputStream(sortie);
   }
   public void run(){
      try {
         for( int k = 0; k<20; ++k){
             int i = (int)(Math.random()*100);
              s.writeInt(i);
              System.out.println(">>>   "+i);
              sleep(200);
         }
          s.close();
      }catch (IOException e) {
         e.printStackTrace();
      } catch (InterruptedException e) {
          e.printStackTrace();
      }
   }
}
public class Entree extends Thread {
   PipedInputStream entree;
   DataInputStream d;
   public Entree(PipedInputStream entree) {
      super();
      this.entree = entree;
      d = new DataInputStream(entree);
   }
   public void run(){
      try {
         while(true){
           int i = d.readInt();
            System.out.println("      "+i+" >>>");
         }
      } catch (EOFException e) {
         System.out.println("FIN des entrées !");
      }catch (IOException e) {
         e.printStackTrace();
      }
   }
}
PipedOutputStream pos = new PipedOutputStream();
try {
   PipedInputStream  pis = new PipedInputStream(pos);
   Sortie sp = new Sortie(pos);
   Entree ep = new Entree(pis);
   sp.start();
   ep.start();
} catch (IOException e) {
   e.printStackTrace();
}
ce n'est pas une pipe

c'est un tube

haut de la page