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.
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