Classe Java PipedWriter

Classe Java PipedWriter

Le Classe PipedWriter en Java permet à deux threads de communiquer entre eux en transmettant des données via un canal. Cette classe est utile lorsque l'on souhaite qu'une partie du programme envoie des données à une autre partie sans les stocker en mémoire.

Caractéristiques de la classe PipedWriter :

  • Il permet d'écrire des données dans un tube.
  • Il utilise un tampon pour stocker temporairement les données avant de les envoyer au PipedReader.
  • Il fonctionne avec PipedReader pour garantir un transfert de données sécurisé entre les threads.
  • Si le tuyau se brise, une erreur est générée.

Déclaration de PipedWriter en Java

La déclaration de la classe PipedWriter est :

la classe publique PipedWriter étend Writer

Toutes les interfaces implémentées :

  • Fermable : Cette interface est utilisée par les classes qui gèrent des ressources.
  • Jetable : Cette interface est utilisée pour vider les données vers leur destination.
  • Appendice : Cette interface est utilisée pour ajouter des données à un flux existant.
  • Fermeture automatique : Cette interface permet la fermeture automatique des ressources.

Constructeurs dans la classe PipedWriter

Cette classe se compose de deux constructeurs à l'aide desquels nous pouvons créer des objets de cette classe de différentes manières. Voici les constructeurs disponibles dans cette classe :

1. PipedWriter() : Ce constructeur est utilisé pour créer un PipedWriter qui n'est encore connecté à rien.

Syntaxe:

PipedWriter()

Exemple:

Java
   // Demonstrating the working   // of PipedWriter()   import     java.io.*  ;   class   Geeks     {      public     static     void     main  (  String  []     args  )     {          // Create PipedWriter and PipedReader      PipedWriter     w     =     new     PipedWriter  ();      PipedReader     r     =     new     PipedReader  ();      try     {      // Connect the PipedWriter to the PipedReader      w  .  connect  (  r  );      // Create a thread to write data into the pipe      Thread     writerThread     =     new     Thread  (  new     Runnable  ()     {      public     void     run  ()     {      try     {      w  .  write  (  'Hello from PipedWriter!'  );      w  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }      });      // Create a thread to read data from the pipe      Thread     readerThread     =     new     Thread  (  new     Runnable  ()     {      public     void     run  ()     {      try     {      int     data  ;      while     ((  data     =     r  .  read  ())     !=     -  1  )     {      System  .  out  .  print  ((  char  )     data  );      }      r  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }      });      // Start both threads      writerThread  .  start  ();      readerThread  .  start  ();      // Wait for both threads to finish      writerThread  .  join  ();      readerThread  .  join  ();      }     catch     (  IOException     |     InterruptedException     e  )     {      e  .  printStackTrace  ();      }      }   }   

Sortir
Hello from PipedWriter! 


2. PipedWriter (PipedReader inStream) : Ce constructeur est utilisé pour créer un PipedWriter et le connecter à un PipedReader.

Syntaxe:

PipedWriter (PipedReader snk)

Exemple:

Java
   // Demonstrating the working    // PipedWriter(PipedReader snk)   import     java.io.*  ;   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {      // Create a PipedReader and a PipedWriter      PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  (  r  );         // Create a thread to write data to the PipedWriter      Thread     writerThread     =     new     Thread  (()     ->     {      try     {      w  .  write  (  'Hello PipedWriter'  );      w  .  close  ();         }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      });      // Create a thread to read data from the PipedReader      Thread     readerThread     =     new     Thread  (()     ->     {      try     {      int     data  ;      while     ((  data     =     r  .  read  ())     !=     -  1  )     {      System  .  out  .  print  ((  char  )     data  );         }      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      });      // Start both threads      writerThread  .  start  ();      readerThread  .  start  ();      // Wait for both threads to finish      writerThread  .  join  ();      readerThread  .  join  ();      }     catch     (  IOException     |     InterruptedException     e  )     {      e  .  printStackTrace  ();      }      }   }   

Sortir
Hello PipedWriter 


Méthodes Java PipedWriter

L'image ci-dessous montre les méthodes de la classe PipedWriter.

Classe io.PipedWriter en Java


Nous allons maintenant discuter de chaque méthode une par une en détail :

1. écrire (int char): Cette méthode est utilisée pour écrire un seul caractère dans un tube.

Syntaxe:

écriture publique vide (int char)

  • Paramètre: Cette méthode prend un paramètre qui est char représentant le caractère à écrire.
  • Exception: Cette méthode renvoie IOException s'il y a un problème avec l'opération d'E/S.


2. write(char[] carray int offset int maxlen) : Cette méthode est utilisée pour écrire des caractères d’un tableau dans le tube.

Syntaxe:

public void write (char[] carray int offset int maxlen)

  • Paramètre: Cette méthode comprend trois paramètres répertoriés ci-dessous :
    • carray: C'est le tableau de caractères qui contient les données
    • compenser: C'est la position dans le tableau où commencer à écrire le formulaire
    • maxlen : C'est le nombre maximum de caractères à écrire.
  • Exception: Cette méthode renvoie IOException s'il y a un problème avec l'opération d'E/S.


3. connecter (destination PipedReader) : Cette méthode est utilisée pour connecter le PipedWriter à un PipedReader.

Syntaxe:

connexion publique vide (destination PipedReader)

  • Paramètre: Cette méthode prend une destination de paramètre : le PipedReader auquel le PipedWriter se connectera pour le transfert de données.
  • Exception: Cette méthode renvoie IOException si une erreur se produit lors de la connexion.


4. flush() : Cette méthode est utilisée pour vider les données dans le canal.

Syntaxe:

public void flush()

  • Paramètre: Cette méthode ne prend aucun paramètre.
  • Exception: Cette méthode renvoie IOException si une erreur se produit lors du vidage des données.


5. fermer() : Cette méthode est utilisée pour fermer le PipedWriter.

Synatex :

public vide fermer()

  • Paramètre: Cette méthode ne prend aucun paramètre.
  • Exception: Cette méthode renvoie IOException s'il y a un problème avec la fermeture du rédacteur.


Nous allons maintenant discuter de la façon dont nous pouvons utiliser la classe PipedWriter pour écrire des données et les lire via un PipedReader connecté.

Exemple:

Java
   // Demonstrating how to use PipedReader    // and PipedWriter to transferr an array    // of characters between two threads   import     java.io.*  ;      public     class   Geeks     {         public     static     void     main  (  String  []     args  )     throws     IOException     {         PipedReader     r     =     new     PipedReader  ();         PipedWriter     w     =     new     PipedWriter  ();         r  .  connect  (  w  );     // Must connect before use       // Writing a char array       char  []     c     =     {  'J'       'A'       'V'       'A'  };         w  .  write  (  c       0       4  );         // Reading blocks if no data is written yet      System  .  out  .  print  (  'Output from the pipe:'  );         for     (  int     i     =     0  ;     i      <     4  ;     i  ++  )     {         System  .  out  .  print  (  ' '     +     (  char  )     r  .  read  ());         }         w  .  close  ();         r  .  close  ();         }      }   

Sortir
Output from the pipe: J A V A 



Programme Java illustrant le fonctionnement des méthodes de classe PipedWriter

Nous allons maintenant écrire quelques caractères dans la sortie et fermer le rédacteur.

Exemple:

Java
   // Java program illustrating the working of PipedWriter    // write() connect    // close() flush()   import     java.io.*  ;   public     class   Geeks     {          public     static     void     main  (  String  []     args  )     throws     IOException     {      PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  ();      try     {      // Use of connect(): Connecting the writer to the reader      r  .  connect  (  w  );      // Use of write(int byte): Writing characters to the pipe      w  .  write  (  71  );         w  .  write  (  69  );      w  .  write  (  69  );      w  .  write  (  75  );      w  .  write  (  83  );         // Use of flush() method: Flushing the output to       // make sure all data is written      w  .  flush  ();      System  .  out  .  println  (  'Output after flush():'  );      // Reading from the pipe      for     (  int     i     =     0  ;     i      <     5  ;     i  ++  )     {      System  .  out  .  print  (  ' '     +     (  char  )     r  .  read  ());      }      // Use of close() method: Closing the writer      System  .  out  .  println  (  'nClosing the Writer stream'  );      w  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

Sortir
Output after flush(): G E E K S Closing the Writer stream  
Créer un quiz