logo

Java PipedWriter-Klasse

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.

io.PipedWriter-Klasse in Java' title=


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 stream 
Quiz erstellen