Java PipedWriter klass

Java PipedWriter klass

De PipedWriter-klass i Java tillåter två trådar att kommunicera med varandra genom att skicka data genom ett rör. Denna klass är användbar när vi vill att en del av programmet ska skicka data till en annan del utan att lagra den i minnet.

Funktioner i PipedWriter-klassen:

  • Det gör det möjligt att skriva data i ett rör.
  • Den använder en buffert för att tillfälligt lagra data innan den skickas till PipedReader.
  • Det fungerar med PipedReader för att säkerställa säker dataöverföring mellan trådar.
  • Om röret går sönder ger det ett fel.

Deklaration av PipedWriter i Java

Deklarationen för klassen PipedWriter är:

public class PipedWriter utökar Writer

Alla implementerade gränssnitt:

  • Stängbar: Detta gränssnitt används av klasser som hanterar resurser.
  • Detta gränssnitt används för att spola data till dess destination.
  • Kan läggas till: Detta gränssnitt används för att lägga till data till en befintlig ström.
  • Autostängbar: Detta gränssnitt tillåter automatisk stängning av resurser.

Konstruktörer i PipedWriter-klassen

Denna klass består av två konstruktorer med hjälp av vilka vi kan skapa objekt av denna klass på olika sätt. Följande är de konstruktörer som finns tillgängliga i den här klassen:

1. PipedWriter(): Denna konstruktor används för att skapa en PipedWriter som inte är ansluten till någonting ännu.

Syntax:

PipedWriter()

Exempel:

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

Produktion
Hello from PipedWriter! 


2. PipedWriter(PipedReader inStream): Denna konstruktor som vi använde för att skapa en PipedWriter och ansluter den till en PipedReader.

Syntax:

PipedWriter(PipedReader snk)

Exempel:

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

Produktion
Hello PipedWriter 


Java PipedWriter-metoder

Bilden nedan visar metoderna i klassen PipedWriter.

io.PipedWriter-klass i Java


Nu ska vi diskutera varje metod en efter en i detalj:

1. skriv(int char): Denna metod används för att skriva ett enstaka tecken till ett rör.

Syntax:

public void write(int char)

  • Parameter: Denna metod tar en parameter som representerar det tecken som ska skrivas.
  • Undantag: Denna metod returnerar IOException om det finns ett problem med I/O-operationen.


2. skriv(char[] carray int offset int maxlen): Denna metod används för att skriva tecken från en array till röret.

Syntax:

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

  • Parameter: Denna metod inkluderar tre parametrar som listas nedan:
    • bära:
    • offset: Det är platsen i arrayen där man ska börja skriva form
    • maxlen: Det är det maximala antalet tecken att skriva.
  • Undantag: Denna metod returnerar IOException om det finns ett problem med I/O-operationen.


3. anslut (PipedReader destination): Denna metod används för att ansluta PipedWriter till en PipedReader.

Syntax:

public void connect (PipedReader destination)

  • Parameter: Denna metod tar en parameterdestination, det är PipedReader som PipedWriter kommer att ansluta till för dataöverföring.
  • Undantag: Denna metod kastar IOException om ett fel uppstår under anslutning.


4. spola(): Denna metod används för att spola data i röret.

Syntax:

public void flush()

  • Parameter: Denna metod tar inte någon parameter.
  • Undantag: Denna metod kastar IOException om ett fel uppstår när data töms.


5. stäng():

Synatx:

public void close()

  • Parameter: Denna metod tar inte någon parameter.
  • Undantag: Denna metod kastar IOException om det finns ett problem med att stänga skrivaren.


Nu ska vi diskutera hur vi kan använda PipedWriter-klassen för att skriva data och läsa den genom en ansluten PipedReader

Exempel:

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

Produktion
Output from the pipe: J A V A 



Java-program som illustrerar hur PipedWriter klassmetoder fungerar

Nu kommer vi att skriva några karaktärer att spola utgången och stänga skribenten.

Exempel:

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

Produktion
Output after flush(): G E E K S Closing the Writer stream  
Skapa frågesport