Java PipedReader-Klasse

Java PipedReader-Klasse

Der PipedReader-Klasse in Java ist Teil der java.io Paket und wird zum Lesen von Zeichendaten aus einer Pipe verwendet. Diese Klasse ermöglicht die Kommunikation zwischen Threads, wobei ein Thread Daten mit einem PipedWriter schreibt und ein anderer sie mit einem PipedWriter liest PipedReader.

Funktionen der PipedReader-Klasse:

  • Es ermöglicht das Lesen von Daten über eine Pipe.
  • Es verwendet einen Puffer zum Speichern der vom PipedWriter empfangenen Daten.
  • Es arbeitet mit PipedWriter zusammen, um sicherzustellen, dass die Daten sicher zwischen Threads übertragen werden.
  • Wenn das Rohr bricht, wird ein Fehler ausgegeben.

Was ist eine Pipe in Java?

In Java wird eine Pipe verwendet, um zwei Threads zu verbinden. Ein Thread wird zum Senden von Daten durch die Pipe verwendet und der andere Thread liest die Daten. Wenn der Thread, der die Daten sendet, stoppt oder abstürzt, gilt die Pipe als defekt.

Deklaration der PipedReader-Klasse

Die Deklaration der PipedReader-Klasse lautet:

Die öffentliche Klasse PipedReader erweitert Reader

Alle implementierten Schnittstellen:

  • Verschließbar: Diese Schnittstelle wird verwendet, um den Stream zu schließen und Ressourcen freizugeben, wenn sie nicht mehr benötigt werden.
  • AutoCloseable: Diese Schnittstelle ermöglicht die automatische Ressourcenverwaltung in Try-with-Resources-Anweisungen.
  • Lesbar: Über diese Schnittstelle können Daten aus dem Stream gelesen werden.

Konstruktoren von PipedReader

Diese Klasse besteht aus vier Konstruktoren, mit deren Hilfe wir Objekte dieser Klasse auf unterschiedliche Weise erstellen können. Die folgenden Konstruktoren sind in dieser Klasse verfügbar:

1. PipedReader(): Dieser Konstruktor erstellt einen PipedReader, der noch mit keinem Writer verbunden ist.

Syntax:

öffentlicher PipedReader()


2. PipedReader(int pipeSize): Dieser Konstruktor erstellt einen PipedReader mit einer angegebenen Pipe-Größe.

Syntax:

public PipedReader(int pSize)


3. PipedReader(PipedWriter src): Dieser Konstruktor erstellt einen PipedReader, der mit der PipedWriterStream-Quelle verbunden ist.

public PipedReader(PipedWriter src)


4. PipedReader(PipedWriter src int pipeSize): Dieser Konstruktor erstellt einen verbundenen PipedReader mit einer angegebenen Größe und ist mit dem angegebenen PipedWriter verknüpft.

Syntax:

public PipedReader(PipedWriter src int pSize)


Java PipedReaderMethods

Das Bild unten zeigt die Methoden der PipedReader-Klasse.

io.PipedReader-Klasse in Java


Jetzt werden wir jede Methode einzeln im Detail besprechen:

1. read(): Diese Methode wird verwendet, um das nächste Zeichen vom PipedReader abzurufen. Es blockiert, bis Daten zum Lesen vorhanden sind oder ein Fehler auftritt.

Syntax:

public int read() löst eine IOException aus

  • Parameter:
  • Rückgabetyp: Diese Methode gibt das nächste Zeichen als Ganzzahl zurück oder gibt -1 zurück, wenn das Ende des Streams erreicht ist.

Beispiel:

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

Ausgabe
Read: G Read: E Read: K  


2. read(char[] carray int offset int maxlen): This method is used to reads upto maxlen character from PipedReader Stream to the character array. Die Methode blockiert, wenn das Ende des Streams erreicht ist oder eine Ausnahme ausgelöst wird.

Syntax:

public int read(char[] carray int offset int maxlen) löst eine IOException aus

  • Parameter: Diese Methode umfasst drei Parameter, die unten aufgeführt sind:
    • tragen: Es ist der Puffer, in den die Daten eingelesen werden.
    • Versatz: Es ist die Startposition im Array
    • maxlen: Die maximale Anzahl von Zeichen, die in das Array eingelesen werden sollen.
  • Rückgabetyp: Diese Methode gibt maxlen Bytes der Daten als Ganzzahlwert zurück oder gibt -1 zurück, wenn das Ende des Streams erreicht ist

Beispiel:

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

Ausgabe
Read characters: GEKS 


3. close(): Diese Methode wird verwendet, um den PipedReader zu schließen.

Syntax:

public void close() löst eine IOException aus

  • Parameter: Diese Methode benötigt keine Parameter
  • Rückgabetyp: Diese Methode gibt nichts zurück

Beispiel:

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.'  );      }   }   

Ausgabe
Stream closed.  


4. bereit(): Mit dieser Methode wird überprüft, ob der Stream zum Lesen bereit ist.

Syntax:

public boolean ready() löst eine IOException aus

  • Parameter: Diese Methode benötigt keine Parameter
  • Rückgabetyp: Diese Methode gibt „true“ zurück, wenn der Stream zum Lesen bereit ist, andernfalls gibt sie „false“ zurück.

Beispiel:

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

Ausgabe
Stream is ready to be read: true  


5. close(): Diese Methode wird zum Schließen der PipedReader-Streams verwendet.

Syntax:

public void close()

  • Parameter: Diese Methode benötigt keine Parameter.
  • Rückgabetyp: Diese Methode gibt nichts zurück.

Beispiel:

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

Ausgabe
Read: A Stream closed.  
Quiz erstellen