Der PipedWriter-Klasse in Java Ermöglicht die Kommunikation zweier Threads miteinander, indem Daten über eine Pipe weitergeleitet werden. Diese Klasse ist nützlich, wenn wir möchten, dass ein Teil des Programms Daten an einen anderen Teil sendet, ohne sie im Speicher zu speichern.
Funktionen der PipedWriter-Klasse:
- Es ermöglicht das Schreiben von Daten in eine Pipe.
- Es verwendet einen Puffer, um Daten vorübergehend zu speichern, bevor sie an den PipedReader gesendet werden.
- Es arbeitet mit PipedReader zusammen, um eine sichere Datenübertragung zwischen Threads zu gewährleisten.
- Wenn das Rohr bricht, wird ein Fehler ausgegeben.
Deklaration von PipedWriter in Java
Die Deklaration der PipedWriter-Klasse lautet:
Die öffentliche Klasse PipedWriter erweitert Writer
Alle implementierten Schnittstellen:
- Verschließbar: Diese Schnittstelle wird von Klassen verwendet, die Ressourcen verwalten.
- Spülbar: Diese Schnittstelle wird verwendet, um Daten an ihr Ziel zu übertragen.
- Diese Schnittstelle wird verwendet, um Daten an einen vorhandenen Stream anzuhängen.
- AutoCloseable: Diese Schnittstelle ermöglicht das automatische Schließen von Ressourcen.
Konstruktoren in der PipedWriter-Klasse
Diese Klasse besteht aus zwei Konstruktoren, mit deren Hilfe wir Objekte dieser Klasse auf unterschiedliche Weise erstellen können. Die folgenden Konstruktoren sind in dieser Klasse verfügbar:
1. PipedWriter(): Dieser Konstruktor wird verwendet, um einen PipedWriter zu erstellen, der noch mit nichts verbunden ist.
Syntax:
PipedWriter()
Beispiel:
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(); } } }
Ausgabe
Hello from PipedWriter!
2. PipedWriter(PipedReader inStream): Mit diesem Konstruktor haben wir einen PipedWriter erstellt und ihn mit einem PipedReader verbunden.
Syntax:
PipedWriter(PipedReader snk)
Beispiel:
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(); } } }
Ausgabe
Hello PipedWriter
Java PipedWriter-Methoden
Das Bild unten zeigt die Methoden der PipedWriter-Klasse.

Jetzt werden wir jede Methode einzeln im Detail besprechen:
1. write(int char): Mit dieser Methode wird ein einzelnes Zeichen in eine Pipe geschrieben.
Syntax:
public void write(int char)
- Parameter: Diese Methode benötigt einen Parameter, der das zu schreibende Zeichen darstellt.
- Ausnahme: Diese Methode gibt eine IOException zurück, wenn beim E/A-Vorgang ein Problem vorliegt.
Regressionsausdruck in Java
2. write(char[] carray int offset int maxlen): Mit dieser Methode werden Zeichen aus einem Array in die Pipe geschrieben.
Syntax:
public void write(char[] carray int offset int maxlen)
- Parameter: Diese Methode umfasst drei Parameter, die unten aufgeführt sind:
- tragen: Es ist das Zeichenarray, das Daten enthält
- Versatz: Dies ist die Position im Array, an der mit dem Schreiben des Formulars begonnen werden soll
- maxlen: Dies ist die maximale Anzahl der zu schreibenden Zeichen.
- Ausnahme: Diese Methode gibt eine IOException zurück, wenn beim E/A-Vorgang ein Problem vorliegt.
3. connect(PipedReader-Ziel): Diese Methode wird verwendet, um den PipedWriter mit einem PipedReader zu verbinden.
Syntax:
public void connect (PipedReader-Ziel)
- Parameter: Diese Methode benötigt ein Parameterziel, nämlich den PipedReader, mit dem der PipedWriter zur Datenübertragung eine Verbindung herstellt.
- Ausnahme: Diese Methode löst eine IOException aus, wenn beim Herstellen einer Verbindung ein Fehler auftritt.
4. Flush(): Diese Methode wird verwendet, um Daten in der Pipe zu leeren.
Syntax:
- Parameter: Diese Methode benötigt keinen Parameter.
- Ausnahme: Diese Methode löst eine IOException aus, wenn beim Leeren der Daten ein Fehler auftritt.
5. close(): Diese Methode wird verwendet, um den PipedWriter zu schließen.
Synatx:
public void close()
- Parameter: Diese Methode benötigt keinen Parameter.
- Ausnahme: Diese Methode löst eine IOException aus, wenn beim Schließen des Writers ein Problem auftritt.
Jetzt besprechen wir, wie wir die PipedWriter-Klasse verwenden können, um Daten zu schreiben und sie über einen verbundenen PipedReader zu lesen
Beispiel:
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(); } }
Ausgabe
Output from the pipe: J A V A
Java-Programm zur Veranschaulichung der Funktionsweise von PipedWriter-Klassenmethoden
Jetzt werden wir einige Zeichen schreiben, die Ausgabe leeren und den Writer schließen.
Beispiel:
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(); } } }
Ausgabe
Output after flush(): G E E K S Closing the Writer streamQuiz erstellen