Třída Java PipedWriter

Třída Java PipedWriter

The Třída PipedWriter v Javě umožňuje dvěma vláknům vzájemně komunikovat předáváním dat potrubím. Tato třída je užitečná, když chceme, aby jedna část programu posílala data do jiné části, aniž by je ukládala do paměti.

Vlastnosti třídy PipedWriter:

  • Umožňuje zápis dat do roury.
  • Používá vyrovnávací paměť k dočasnému uložení dat před jejich odesláním do PipedReader.
  • Spolupracuje s PipedReader pro zajištění bezpečného přenosu dat mezi vlákny.
  • Pokud se potrubí rozbije, vyvolá chybu.

Deklarace PipedWriter v Javě

Deklarace třídy PipedWriter je:

public class PipedWriter rozšiřuje Writer

Všechna implementovaná rozhraní:

  • Uzavíratelné: Toto rozhraní používají třídy, které zacházejí se zdroji.
  • Splachovatelný: Toto rozhraní se používá k vyprázdnění dat na místo určení.
  • Připojitelné: Toto rozhraní se používá k připojení dat k existujícímu streamu.
  • Automatické zavírání: Toto rozhraní umožňuje automatické uzavření zdrojů.

Konstruktoři ve třídě PipedWriter

Tato třída se skládá ze dvou konstruktorů, s jejichž pomocí můžeme vytvářet objekty této třídy různými způsoby. V této třídě jsou k dispozici následující konstruktory:

1. PipedWriter(): Tento konstruktor se používá k vytvoření PipedWriter, který ještě není k ničemu připojen.

Syntax:

PipedWriter()

Pří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 konstruktor, který jsme použili k vytvoření PipedWriter a připojí jej k PipedReader.

Syntax:

PipedWriter (PipedReader snk)

Pří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 


Metody Java PipedWriter

Obrázek níže ukazuje metody třídy PipedWriter.

Třída io.PipedWriter v Javě


Nyní budeme diskutovat o každé metodě jednu po druhé podrobně:

1. napište (int char): Tato metoda se používá k zápisu jednoho znaku do kanálu.

Syntax:

public void write (int char)

  • Parametr: Tato metoda má jeden parametr, který představuje znak, který má být zapsán.
  • Výjimka: Tato metoda vrátí IOException, pokud dojde k problému s I/O operací.


2. write(char[] carray int offset int maxlen): Tato metoda se používá k zápisu znaků z pole do kanálu.

Syntax:

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

  • Parametr: Tato metoda zahrnuje tři parametry, které jsou uvedeny níže:
    • carray: Je to pole znaků, které obsahuje data
    • offset: Je to pozice v poli, kde začít psát formulář
    • maxlen: Je to maximální počet znaků, které lze napsat.
  • Výjimka: Tato metoda vrátí IOException, pokud dojde k problému s I/O operací.


3. připojit (cíl PipedReader): Tato metoda se používá k připojení PipedWriter k PipedReader.

Syntax:

veřejné void připojení (cíl PipedReader)

  • Parametr: Tato metoda má jeden cílový parametr, kterým je PipedReader, ke kterému se PipedWriter připojí pro přenos dat.
  • Výjimka: Tato metoda vyvolá IOException, pokud během připojování dojde k chybě.


4. flush(): Tato metoda se používá k vyprázdnění dat v potrubí.

Syntax:

public void flush()

  • Parametr: Tato metoda nebere žádný parametr.
  • Výjimka: Tato metoda vyvolá IOException, pokud dojde k chybě při vyprázdnění dat.


5. zavřít(): Tato metoda se používá k uzavření PipedWriter.

Synatx:

public void close()

  • Parametr: Tato metoda nebere žádný parametr.
  • Výjimka: Tato metoda vyvolá IOException, pokud dojde k problému s zavřením zapisovače.


Nyní probereme, jak můžeme použít třídu PipedWriter k zápisu dat a jejich čtení přes připojený PipedReader

Pří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 



Java program ilustrující fungování metod třídy PipedWriter

Nyní napíšeme, že některé znaky vyprázdní výstup a zavřeme zapisovač.

Pří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  
Vytvořit kvíz