Java PipedWriter klasa

Java PipedWriter klasa

The Klasa PipedWriter u Javi omogućuje dvije niti da međusobno komuniciraju prosljeđivanjem podataka kroz cijev. Ova klasa je korisna kada želimo da jedan dio programa šalje podatke drugom dijelu bez pohranjivanja u memoriju.

Značajke klase PipedWriter:

  • Omogućuje pisanje podataka u cijev.
  • Koristi međuspremnik za privremeno pohranjivanje podataka prije slanja u PipedReader.
  • Radi s PipedReaderom kako bi osigurao siguran prijenos podataka između niti.
  • Ako cijev pukne, javlja se pogreška.

Deklaracija PipedWritera u Javi

Deklaracija klase PipedWriter je:

javna klasa PipedWriter proširuje Writer

Sva implementirana sučelja:

  • Može se zatvoriti: Ovo sučelje koriste klase koje rukuju resursima.
  • Mogućnost ispiranja: Ovo se sučelje koristi za ispiranje podataka do odredišta.
  • Priključivo: Ovo se sučelje koristi za dodavanje podataka u postojeći tok.
  • Automatsko zatvaranje: Ovo sučelje omogućuje automatsko zatvaranje resursa.

Konstruktori u klasi PipedWriter

Ova klasa se sastoji od dva konstruktora uz pomoć kojih objekte ove klase možemo kreirati na različite načine. Sljedeći su konstruktori dostupni u ovoj klasi:

1. PipedWriter(): Ovaj se konstruktor koristi za stvaranje PipedWriter-a koji još ni s čim nije povezan.

Sintaksa:

PipedWriter()

Primjer:

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

Izlaz
Hello from PipedWriter! 


2. PipedWriter(PipedReader inStream): Ovaj konstruktor za koji smo koristili stvara PipedWriter i povezuje ga s PipedReaderom.

Sintaksa:

PipedWriter(PipedReader snk)

Primjer:

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

Izlaz
Hello PipedWriter 


Java PipedWriter metode

Slika ispod pokazuje metode klase PipedWriter.

io.PipedWriter klasa u Javi


Sada ćemo detaljno razmotriti svaku metodu jednu po jednu:

1. napiši (int char): Ova se metoda koristi za upisivanje jednog znaka u cijev.

Sintaksa:

javno prazno pisanje (int char)

  • Parametar: Ova metoda uzima jedan parametar koji ischar predstavlja znak koji treba napisati.
  • Iznimka: Ova metoda vraća IOException ako postoji problem s I/O operacijom.


2. write(char[] carray int offset int maxlen): Ova se metoda koristi za pisanje znakova iz niza u cijev.

Sintaksa:

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

  • Parametar: Ova metoda uključuje tri parametra koji su navedeni u nastavku:
    • Carray: To je niz znakova koji sadrži podatke
    • pomak: To je pozicija u nizu na kojoj se počinje pisati obrazac
    • maxlen: To je najveći broj znakova za pisanje.
  • Iznimka: Ova metoda vraća IOException ako postoji problem s I/O operacijom.


3. povezivanje (odredište PipedReader): Ova se metoda koristi za povezivanje PipedWriter-a s PipedReader-om.

Sintaksa:

javno prazno povezivanje (PipedReader odredište)

  • Parametar: Ova metoda uzima odredište jednog parametra, to je PipedReader na koji će se PipedWriter povezati za prijenos podataka.
  • Iznimka: Ova metoda izbacuje IOException ako dođe do pogreške tijekom povezivanja.


4. ispiranje(): Ova se metoda koristi za ispiranje podataka u cijevi.

Sintaksa:

javni void flush()

  • Parametar: Ova metoda ne uzima nikakve parametre.
  • Iznimka: Ova metoda izbacuje IOException ako dođe do pogreške tijekom ispiranja podataka.


5. zatvori(): Ova se metoda koristi za zatvaranje PipedWritera.

Synatx:

public void close()

  • Parametar: Ova metoda ne uzima nikakve parametre.
  • Iznimka: Ova metoda izbacuje IOException ako postoji problem sa zatvaranjem programa za pisanje.


Sada ćemo razgovarati o tome kako možemo koristiti klasu PipedWriter za pisanje podataka i njihovo čitanje kroz povezani PipedReader

Primjer:

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

Izlaz
Output from the pipe: J A V A 



Java program koji ilustrira rad metoda klase PipedWriter

Sada ćemo napisati neke znakove isprazniti izlaz i zatvoriti program za pisanje.

Primjer:

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

Izlaz
Output after flush(): G E E K S Closing the Writer stream  
Napravi kviz