Java PipedWriter osztály

Java PipedWriter osztály

A PipedWriter osztály Java nyelven lehetővé teszi, hogy két szál kommunikáljon egymással azáltal, hogy adatokat továbbít egy csövön keresztül. Ez az osztály akkor hasznos, ha azt szeretnénk, hogy a program egy része adatokat küldjön egy másik résznek anélkül, hogy azokat a memóriában tárolná.

A PipedWriter osztály jellemzői:

  • Lehetővé teszi adatok csőbe írását.
  • Puffert használ az adatok ideiglenes tárolására, mielőtt elküldené azokat a PipedReadernek.
  • Együttműködik a PipedReaderrel, hogy biztonságos adatátvitelt biztosítson a szálak között.
  • Ha a cső eltörik, hibát jelez.

A PipedWriter nyilatkozata Java nyelven

A PipedWriter osztály nyilatkozata a következő:

nyilvános osztály PipedWriter kiterjeszti Writer-t

Minden megvalósított interfész:

  • Zárható: Ezt a felületet az erőforrásokat kezelő osztályok használják.
  • Öblíthető: Ez az interfész arra szolgál, hogy az adatokat a rendeltetési helyre ürítse.
  • Hozzáfűzhető: Ez az interfész adatok hozzáfűzésére szolgál egy meglévő adatfolyamhoz.
  • Automatikus bezárás: Ez az interfész lehetővé teszi az erőforrások automatikus bezárását.

Konstruktorok a PipedWriter osztályban

Ez az osztály két konstruktorból áll, amelyek segítségével többféleképpen hozhatunk létre objektumokat ebből az osztályból. A következő konstruktorok állnak rendelkezésre ebben az osztályban:

1. PipedWriter(): Ezzel a konstruktorral olyan PipedWritert hozhatunk létre, amely még nem kapcsolódik semmihez.

Szintaxis:

PipedWriter()

Példa:

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

Kimenet
Hello from PipedWriter! 


2. PipedWriter (PipedReader inStream): Ez a konstruktor, amellyel korábban létrehoztunk egy PipedWriter-t, és összekapcsolja egy PipedReaderrel.

Szintaxis:

PipedWriter (PipedReader snk)

Példa:

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

Kimenet
Hello PipedWriter 


Java PipedWriter módszerek

Az alábbi kép a PipedWriter osztály metódusait mutatja be.

io.PipedWriter osztály Java nyelven


Most az egyes módszereket részletesen tárgyaljuk:

1. írás (int char): Ezt a módszert egyetlen karakter csőbe írására használják.

Szintaxis:

public void írás (int char)

  • Paraméter: Ez a módszer egy olyan paramétert vesz fel, amely az írandó karaktert reprezentálja.
  • Kivétel: Ez a módszer az IOException értéket adja vissza, ha probléma van az I/O művelettel.


2. write(char[] carray int offset int maxlen): Ezzel a módszerrel karaktereket írhatunk egy tömbből a csőbe.

Szintaxis:

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

  • Paraméter: Ez a módszer három paramétert tartalmaz, amelyeket az alábbiakban felsorolunk:
    • carray: Ez a karaktertömb, amely adatokat tartalmaz
    • eltolás: Ez az a pozíció a tömbben, ahol el kell kezdeni az űrlap írását
    • maxlen: Ez az írható karakterek maximális száma.
  • Kivétel: Ez a módszer az IOException értéket adja vissza, ha probléma van az I/O művelettel.


3. csatlakozás (PipedReader cél): Ez a módszer a PipedWriter és a PipedReader összekapcsolására szolgál.

Szintaxis:

public void connect (PipedReader cél)

  • Paraméter: Ez a metódus egy paramétert vesz igénybe, ez a PipedReader, amelyhez a PipedWriter csatlakozik az adatátvitelhez.
  • Kivétel: Ez a módszer IOException-t dob, ha hiba történik a csatlakozás során.


4. flush(): Ezt a módszert a csőben lévő adatok öblítésére használják.

Szintaxis:

public void flush()

  • Paraméter: Ez a módszer nem vesz fel semmilyen paramétert.
  • Kivétel: Ez a módszer IOException-t dob, ha hiba történik az adatok kiürítése közben.


5. bezár(): Ez a módszer a PipedWriter bezárására szolgál.

Synatx:

public void bezár()

  • Paraméter: Ez a módszer nem vesz fel semmilyen paramétert.
  • Kivétel: Ez a metódus IOExceptiont dob, ha probléma van az író bezárásával.


Most megvitatjuk, hogyan használhatjuk a PipedWriter osztályt adatok írására és olvasására egy csatlakoztatott PipedReaderen keresztül.

Példa:

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

Kimenet
Output from the pipe: J A V A 



Java program, amely szemlélteti a PipedWriter osztály módszereinek működését

Most néhány karaktert írunk, majd kiürítjük a kimenetet, és bezárjuk az írót.

Példa:

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

Kimenet
Output after flush(): G E E K S Closing the Writer stream  
Kvíz létrehozása