Clasa Java PipedWriter

Clasa Java PipedWriter

The Clasa PipedWriter în Java permite două fire să comunice între ele prin trecerea datelor printr-o conductă. Această clasă este utilă atunci când dorim ca o parte a programului să trimită date către o altă parte fără a le stoca în memorie.

Caracteristici ale clasei PipedWriter:

  • Permite scrierea datelor într-o conductă.
  • Utilizează un buffer pentru a stoca temporar datele înainte de a le trimite către PipedReader.
  • Funcționează cu PipedReader pentru a asigura transferul sigur de date între fire.
  • Daca teava se rupe, se produce o eroare.

Declarația PipedWriter în Java

Declarația clasei PipedWriter este:

clasa publică PipedWriter extinde Writer

Toate interfețele implementate:

  • Închidere: Această interfață este folosită de clasele care gestionează resurse.
  • Flushable: Această interfață este utilizată pentru a șterge datele la destinație.
  • Anexabil: Această interfață este utilizată pentru a adăuga date la un flux existent.
  • Închidere automată: Această interfață permite închiderea automată a resurselor.

Constructori din clasa PipedWriter

Această clasă este formată din doi constructori cu ajutorul cărora putem crea obiecte din această clasă în moduri diferite. Următorii sunt constructorii disponibili în această clasă:

1. PipedWriter(): Acest constructor este folosit pentru a crea un PipedWriter care nu este încă conectat la nimic.

Sintaxă:

PipedWriter()

Exemplu:

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

Ieșire
Hello from PipedWriter! 


2. PipedWriter (PipedReader inStream): Acest constructor folosit pentru a crea un PipedWriter și îl conectează la un PipedReader.

Sintaxă:

PipedWriter (snk PipedReader)

Exemplu:

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

Ieșire
Hello PipedWriter 


Metode Java PipedWriter

Imaginea de mai jos demonstrează metodele clasei PipedWriter.

Clasa io.PipedWriter în Java


Acum vom discuta despre fiecare metodă una câte una în detaliu:

1. scrie (int char): Această metodă este folosită pentru a scrie un singur caracter într-un pipe.

Sintaxă:

public void write(int char)

  • Parametru: Această metodă ia un parametru care reprezintă caracterul care urmează să fie scris.
  • Excepţie: Această metodă returnează IOException dacă există o problemă cu operația I/O.


2. scrie(char[] carray int offset int maxlen): Această metodă este folosită pentru a scrie caractere dintr-o matrice în conductă.

Sintaxă:

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

  • Parametru: Această metodă include trei parametri care sunt enumerați mai jos:
    • carray: Este matricea de caractere care conține date
    • compensare: Este poziția din matrice de unde să începeți să scrieți formularul
    • maxlen: Este numărul maxim de caractere de scris.
  • Excepţie: Această metodă returnează IOException dacă există o problemă cu operația I/O.


3. conectați (destinație PipedReader): Această metodă este folosită pentru a conecta PipedWriter la un PipedReader.

Sintaxă:

public void connect (destinație PipedReader)

  • Parametru: Această metodă ia o destinație de parametru, acesta este PipedReader la care PipedWriter se va conecta pentru transferul de date.
  • Excepţie: Această metodă aruncă IOException dacă apare o eroare în timpul conectării.


4. spălare(): Această metodă este utilizată pentru a spăla datele din conductă.

Sintaxă:

spălare public void()

  • Parametru: Această metodă nu ia niciun parametru.
  • Excepţie: Această metodă aruncă IOException dacă apare o eroare în timpul spălării datelor.


5. închide(): Această metodă este folosită pentru a închide PipedWriter.

Synatx:

vid public close()

  • Parametru: Această metodă nu ia niciun parametru.
  • Excepţie: Această metodă aruncă IOException dacă există o problemă cu închiderea scriitorului.


Acum vom discuta cum putem folosi clasa PipedWriter pentru a scrie date și a le citi printr-un PipedReader conectat

Exemplu:

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

Ieșire
Output from the pipe: J A V A 



Program Java care ilustrează funcționarea metodelor clasei PipedWriter

Acum vom scrie câteva caractere care vor șterge rezultatul și vom închide scriitorul.

Exemplu:

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

Ieșire
Output after flush(): G E E K S Closing the Writer stream  
Creați un test