Classe Java PipedReader

Classe Java PipedReader

IL Classe PipedReader in Java fa parte del java.io pacchetto e viene utilizzato per leggere i dati dei caratteri da una pipe. Questa classe consente la comunicazione tra thread in cui un thread scrive i dati utilizzando un PipedWriter e un altro li legge utilizzando PipedReader.

Caratteristiche della classe PipedReader:

  • Permette la lettura dei dati attraverso una pipe.
  • Utilizza un buffer per archiviare i dati ricevuti da PipedWriter.
  • Funziona con PipedWriter per garantire che i dati vengano trasferiti in modo sicuro tra i thread.
  • Se il tubo si rompe genera un errore.

Cos'è una pipe in Java?

In Java viene utilizzata una pipe per collegare due thread. Un thread viene utilizzato per inviare dati attraverso la pipe e l'altro thread legge i dati. Se il thread che sta inviando i dati si interrompe o si blocca, la pipe viene considerata rotta.

Dichiarazione della classe PipedReader

La dichiarazione della classe PipedReader è:

la classe pubblica PipedReader estende Reader

Tutte le interfacce implementate:

  • Chiudibile: Questa interfaccia viene utilizzata per chiudere il flusso e rilasciare le risorse quando non sono più necessarie.
  • Chiusura automatica: Questa interfaccia consente la gestione automatica delle risorse nelle istruzioni try-with-resources.
  • Leggibile: Questa interfaccia consente la lettura dei dati dal flusso.

Costruttori di PipedReader

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

1. PipedReader(): Questo costruttore crea un PipedReader che non è ancora connesso a nessun writer.

Sintassi:

PipedReader pubblico()


2. PipedReader(int pipeSize): Questo costruttore crea aPipedREader con una dimensione di pipe specificata.

Sintassi:

public PipedReader(int pSize)


3. PipedReader(PipedWriter origine): Questo costruttore crea un PipedReader connesso a PipedWriterStream src.

public PipedReader(PipedWriter origine)


4. PipedReader(PipedWriter src int pipeSize): Questo costruttore crea un PidReader connesso con una dimensione specificata e collegato al PipedWriter specificato.

Sintassi:

public PipedReader(PipedWriter src int pSize)


Metodi Java PipedReader

L'immagine seguente mostra i metodi della classe PipedReader.

Classe io.PipedReader in Java


Ora discuteremo di ciascun metodo uno per uno in dettaglio:

1. leggere(): Questo metodo viene utilizzato per ottenere il carattere successivo da PipedReader. Si blocca finché non ci sono dati da leggere o si verifica un errore.

Sintassi:

public int read() lancia IOException

  • Parametro: Questo metodo non accetta alcun parametro.
  • Tipo di reso: Questo metodo restituisce il carattere successivo come numero intero o restituisce -1 se viene raggiunta la fine del flusso.

Esempio:

Java
   // Demonstrating the working    // of read() method   import     java.io.*  ;   public     class   GeeKs     {          public     static     void     main  (  String  []     args  )     throws     IOException     {          PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  ();      // Connect the reader and writer      r  .  connect  (  w  );      // Write data to the PipedWriter      w  .  write  (  71  );         System  .  out  .  println  (  'Read: '     +     (  char  )     r  .  read  ());         w  .  write  (  69  );         System  .  out  .  println  (  'Read: '     +     (  char  )     r  .  read  ());         w  .  write  (  75  );         System  .  out  .  println  (  'Read: '     +     (  char  )     r  .  read  ());         }   }   

Produzione
Read: G Read: E Read: K  


2. leggi(char[] carray int offset int maxlen): Questo metodo viene utilizzato per leggere fino a maxlen caratteri da PipedReader Stream nell'array di caratteri. Il metodo si blocca se viene raggiunta la fine del flusso o se viene generata un'eccezione.

Sintassi:

public int read(char[] carray int offset int maxlen) lancia IOException

  • Parametro: Questo metodo include tre parametri elencati di seguito:
    • carrozza: È il buffer in cui verranno letti i dati.
    • offset: È la posizione iniziale nell'array
    • maxlen: Il numero massimo di caratteri da leggere nell'array.
  • Tipo di reso: Questo metodo restituisce maxlen byte di dati come valore intero oppure restituisce -1 se viene raggiunta la fine del flusso

Esempio:

Java
   // Demonstrating the working    // of read(char[] carray int offset int maxlen)    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  );      // Write data to PipedWriter      w  .  write  (  71  );     // G      w  .  write  (  69  );     // E      w  .  write  (  75  );     // K      w  .  write  (  83  );     // S      // Read data into an array      char  []     b     =     new     char  [  5  ]  ;      r  .  read  (  b       0       5  );          System  .  out  .  print  (  'Read characters: '  );      for     (  char     c     :     b  )     {      System  .  out  .  print  (  c  );         }      }   }   

Produzione
Read characters: GEKS 


3. chiudi(): Questo metodo viene utilizzato per chiudere PipedReader.

Sintassi:

public void close() genera IOException

  • Parametro: Questo metodo non accetta alcun parametro
  • Tipo di reso: Questo metodo non restituisce nulla

Esempio:

Java
   // Demonstrating the working   // of close() method   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  );      w  .  write  (  71  );         // Close the reader      r  .  close  ();      System  .  out  .  println  (  'Stream closed.'  );      }   }   

Produzione
Stream closed.  


4. pronto(): Questo metodo viene utilizzato per verificare se il flusso è pronto per essere letto.

Sintassi:

public boolean ready() lancia IOException

  • Parametro: Questo metodo non accetta alcun parametro
  • Tipo di reso: Questo metodo restituisce true se il flusso è pronto per essere letto altrimenti restituisce false.

Esempio:

Java
   // Demonstrating the working   // of ready() method   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  );      w  .  write  (  71  );         // Check if the stream is ready to be read      System  .  out  .  println  (  'Stream is ready to be read: '     +     r  .  ready  ());      }   }   

Produzione
Stream is ready to be read: true  


5. chiudi(): Questo metodo viene utilizzato per chiudere i flussi PipedReader.

Sintassi:

pubblico vuoto chiuso()

  • Parametro: Questo metodo non accetta alcun parametro.
  • Tipo di reso: Questo metodo non restituisce nulla.

Esempio:

Java
   // Demonstrating the working   // of close() method   import     java.io.*  ;   public     class   Geeks  {          public     static     void     main  (  String  []     args  )     {          try     {      // Create a PipedReader and PipedWriter      PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  ();      // Connect the PipedReader to the PipedWriter      r  .  connect  (  w  );      // Write a character to the PipedWriter      w  .  write  (  'A'  );          // Read and print the character from the PipedReader      System  .  out  .  println  (  'Read: '     +     (  char  )     r  .  read  ());     // Output: A      // Close the PipedReader stream      r  .  close  ();      System  .  out  .  println  (  'Stream closed.'  );      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

Produzione
Read: A Stream closed.  
Crea quiz