Trieda Java PipedWriter

Trieda Java PipedWriter

The Trieda PipedWriter v jazyku Java umožňuje dvom vláknam vzájomnú komunikáciu prenosom údajov cez potrubie. Táto trieda je užitočná, keď chceme, aby jedna časť programu posielala dáta inej časti bez ich uloženia do pamäte.

Vlastnosti triedy PipedWriter:

  • Umožňuje zapisovanie údajov do potrubia.
  • Používa vyrovnávaciu pamäť na dočasné uloženie údajov pred ich odoslaním do PipedReader.
  • Spolupracuje s PipedReaderom na zaistenie bezpečného prenosu dát medzi vláknami.
  • Ak sa potrubie zlomí, vyvolá chybu.

Vyhlásenie PipedWriter v Jave

Vyhlásenie triedy PipedWriter je:

public class PipedWriter rozširuje Writer

Všetky implementované rozhrania:

  • Uzatvárateľné: Toto rozhranie používajú triedy, ktoré manipulujú so zdrojmi.
  • Splachovateľné: Toto rozhranie sa používa na vyprázdnenie údajov na miesto určenia.
  • Pripojiteľné: Toto rozhranie sa používa na pripojenie údajov k existujúcemu streamu.
  • Automatické zatváranie: Toto rozhranie umožňuje automatické zatváranie zdrojov.

Konštruktory v triede PipedWriter

Táto trieda pozostáva z dvoch konštruktorov, pomocou ktorých môžeme vytvárať objekty tejto triedy rôznymi spôsobmi. V tejto triede sú dostupné nasledujúce konštruktory:

1. PipedWriter(): Tento konštruktor sa používa na vytvorenie PipedWriter, ktorý ešte nie je k ničomu pripojený.

Syntax:

PipedWriter()

Príklad:

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  ();      }      }   }   

Výstup
Hello from PipedWriter! 


2. PipedWriter (PipedReader inStream): Tento konštruktor, ktorý sme použili na vytvorenie PipedWriter a pripojil ho k PipedReader.

Syntax:

PipedWriter (PipedReader snk)

Príklad:

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  ();      }      }   }   

Výstup
Hello PipedWriter 


Metódy Java PipedWriter

Obrázok nižšie ukazuje metódy triedy PipedWriter.

Trieda io.PipedWriter v jazyku Java


Teraz budeme diskutovať o každej metóde jeden po druhom podrobne:

1. napíšte (int char): Táto metóda sa používa na zápis jedného znaku do potrubia.

Syntax:

public void write (int char)

  • Parameter: Táto metóda má jeden parameter, ktorý predstavuje znak, ktorý sa má zapísať.
  • Výnimka: Táto metóda vráti IOException, ak sa vyskytne problém s I/O operáciou.


2. write(char[] carray int offset int maxlen): Táto metóda sa používa na zápis znakov z poľa do potrubia.

Syntax:

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

  • Parameter: Táto metóda zahŕňa tri parametre, ktoré sú uvedené nižšie:
    • carray: Je to pole znakov, ktoré obsahuje údaje
    • posun: Je to pozícia v poli, kde začať písať formulár
    • maxlen: Je to maximálny počet znakov na napísanie.
  • Výnimka: Táto metóda vráti IOException, ak sa vyskytne problém s I/O operáciou.


3. pripojiť (cieľ PipedReader): Táto metóda sa používa na pripojenie PipedWriter k PipedReader.

Syntax:

public void connect (destinácia PipedReader)

  • Parameter: Táto metóda má cieľ s jedným parametrom, ktorým je PipedReader, ku ktorému sa PipedWriter pripojí na prenos údajov.
  • Výnimka: Táto metóda vyvolá IOException, ak sa pri pripájaní vyskytne chyba.


4. flush(): Táto metóda sa používa na preplachovanie údajov v potrubí.

Syntax:

public void flush()

  • Parameter: Táto metóda neberie žiadny parameter.
  • Výnimka: Táto metóda vyvolá výnimku IOException, ak sa vyskytne chyba počas vyprázdnenia údajov.


5. zavrieť(): Táto metóda sa používa na zatvorenie PipedWriter.

Synatx:

public void close()

  • Parameter: Táto metóda neberie žiadny parameter.
  • Výnimka: Táto metóda vyvolá IOException, ak sa vyskytne problém so zatvorením zapisovača.


Teraz budeme diskutovať o tom, ako môžeme použiť triedu PipedWriter na zapisovanie údajov a ich čítanie cez pripojený PipedReader

Príklad:

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  ();         }      }   

Výstup
Output from the pipe: J A V A 



Program Java ilustrujúci fungovanie metód triedy PipedWriter

Teraz napíšeme, že niektoré znaky vyprázdnia výstup a zatvoríme zapisovač.

Príklad:

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  ();      }      }   }   

Výstup
Output after flush(): G E E K S Closing the Writer stream  
Vytvoriť kvíz