Java PipedWriter-Klasse

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


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.


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