Classe Java PipedWriter

Classe Java PipedWriter

IL Classe PipedWriter in Java consente a due thread di comunicare tra loro facendo passare i dati attraverso una pipe. Questa classe è utile quando vogliamo che una parte del programma invii dati ad un'altra parte senza memorizzarli in memoria.

Caratteristiche della classe PipedWriter:

  • Permette di scrivere dati in una pipe.
  • Utilizza un buffer per archiviare temporaneamente i dati prima di inviarli a PipedReader.
  • Funziona con PipedReader per garantire un trasferimento sicuro dei dati tra i thread.
  • Se il tubo si rompe genera un errore.

Dichiarazione di PipedWriter in Java

La dichiarazione della classe PipedWriter è:

la classe pubblica PipedWriter estende Writer

Tutte le interfacce implementate:

  • Chiudibile: Questa interfaccia viene utilizzata dalle classi che gestiscono le risorse.
  • Lavabile: Questa interfaccia viene utilizzata per trasferire i dati alla destinazione.
  • Aggiungibile: Questa interfaccia viene utilizzata per aggiungere dati a un flusso esistente.
  • Chiusura automatica: Questa interfaccia consente la chiusura automatica delle risorse.

Costruttori nella classe PipedWriter

Questa classe è composta da due costruttori con l'aiuto dei quali possiamo creare oggetti di questa classe in diversi modi. Di seguito sono riportati i costruttori disponibili in questa classe:

1. PipedWriter(): Questo costruttore viene utilizzato per creare un PipedWriter che non è ancora connesso a nulla.

Sintassi:

PipedWriter()

Esempio:

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

Produzione
Hello from PipedWriter! 


2. PipedWriter (PipedReader inStream): Questo costruttore veniva utilizzato per creare un PipedWriter e collegarlo a un PipedReader.

Sintassi:

PipedWriter(PipedReader snk)

Esempio:

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

Produzione
Hello PipedWriter 


Metodi Java PipedWriter

L'immagine seguente mostra i metodi della classe PipedWriter.

Classe io.PipedWriter in Java


Ora discuteremo di ciascun metodo uno per uno in dettaglio:

1. scrivi(int char): Questo metodo viene utilizzato per scrivere un singolo carattere su una pipe.

Sintassi:

public void write(int char)

  • Parametro: Questo metodo accetta un parametro che è char che rappresenta il carattere da scrivere.
  • Eccezione: Questo metodo restituisce IOException se si verifica un problema con l'operazione di I/O.


2. write(char[] carray int offset int maxlen): Questo metodo viene utilizzato per scrivere caratteri da un array alla pipe.

Sintassi:

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

  • Parametro: Questo metodo include tre parametri elencati di seguito:
    • carrozza: È l'array di caratteri che contiene i dati
    • offset: È la posizione nell'array da cui iniziare a scrivere il modulo
    • maxlen: È il numero massimo di caratteri da scrivere.
  • Eccezione: Questo metodo restituisce IOException se si verifica un problema con l'operazione di I/O.


3. connettersi (destinazione PipedReader): Questo metodo viene utilizzato per connettere PipedWriter a PipedReader.

Sintassi:

connessione pubblica vuota (destinazione PipedReader)

  • Parametro: Questo metodo accetta una destinazione del parametro: è il PipedReader a cui PipedWriter si connetterà per il trasferimento dei dati.
  • Eccezione: Questo metodo genera IOException se si verifica un errore durante la connessione.


4. arrossire(): Questo metodo viene utilizzato per svuotare i dati nella pipe.

Sintassi:

svuotamento pubblico()

  • Parametro: Questo metodo non accetta alcun parametro.
  • Eccezione: Questo metodo genera IOException se si verifica un errore durante lo scaricamento dei dati.


5. chiudi(): Questo metodo viene utilizzato per chiudere PipedWriter.

Sinatx:

pubblico vuoto chiuso()

  • Parametro: Questo metodo non accetta alcun parametro.
  • Eccezione: Questo metodo genera IOException se si verifica un problema con la chiusura del writer.


Ora discuteremo di come possiamo utilizzare la classe PipedWriter per scrivere dati e leggerli tramite un PipedReader connesso

Esempio:

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

Produzione
Output from the pipe: J A V A 



Programma Java che illustra il funzionamento dei metodi della classe PipedWriter

Ora scriveremo alcuni caratteri, scarichiamo l'output e chiudiamo lo scrittore.

Esempio:

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

Produzione
Output after flush(): G E E K S Closing the Writer stream  
Crea quiz