Java.io.PipedInputStream-Klasse in Java

Java.io.PipedInputStream-Klasse in Java
io.PipedInputStream-Klasse Rohre in IO stellt eine Verbindung zwischen zwei Threads her, die gleichzeitig in JVM ausgeführt werden. Daher werden Pipes sowohl als Quelle als auch als Ziel verwendet.
  • PipedInputStream wird auch mit PipedOutputStream weitergeleitet. Daten können also mit PipedOutputStream und mit PipedInputStream geschrieben werden. Die gleichzeitige Verwendung beider Threads führt jedoch zu einem Deadlock für die Threads.
  • Eine Pipe gilt als unterbrochen, wenn ein Thread, der Datenbytes an den verbundenen Ausgabestream über die Pipe bereitgestellt hat, nicht mehr aktiv ist.
Erklärung:
public class PipedInputStream extends InputStream 
Konstrukteur:
    PipedInputStream() : erstellt einen PipedInputStream, mit dem er nicht verbunden ist. PipedInputStream(int pSize) : Erstellt einen PipedInputStream, der nicht mit der angegebenen Pipe-Größe verbunden ist. PipedInputStream(PipedOutputStream outStream) : Erstellt einen PipedInputStream, der mit PipedOutputStream verbunden ist – „outStream“. PipedInputStream(PipedOutputStream outStream int pSize) : Erstellt einen Piped Input Stream, der mit dem Piped Output Stream mit der angegebenen Pipe-Größe verbunden ist.
Methoden:
    int read(): Reads the next byte of data from this piped input stream.The value byte is returned as an int in the range 0 to 255. This method blocks until input data is available the end of the stream is detected or an exception is thrown. Java
       // Java program illustrating the working of read() method   import     java.io.*  ;   public     class   NewClass   {      public     static     void     main  (  String  []     args  )     throws     IOException      {      PipedInputStream     geek_input     =     new     PipedInputStream  ();      PipedOutputStream     geek_output     =     new     PipedOutputStream  ();      try      {      // Use of connect() : connecting geek_input with geek_output      geek_input  .  connect  (  geek_output  );      // Use of read() method :      geek_output  .  write  (  71  );      System  .  out  .  println  (  'using read() : '     +     (  char  )  geek_input  .  read  ());      geek_output  .  write  (  69  );      System  .  out  .  println  (  'using read() : '     +     (  char  )  geek_input  .  read  ());      geek_output  .  write  (  75  );      System  .  out  .  println  (  'using read() : '     +     (  char  )  geek_input  .  read  ());      }      catch     (  IOException     except  )      {      except  .  printStackTrace  ();      }      }   }   
    Ausgabe :
    using read() : G using read() : E using read() : K 
    read(byte[] buffer int offset int maxlen) : java.io.PipedInputStream.read(byte[] buffer int offset int maxlen) Liest bis zu maxlen Bytes der Daten vom Piped Input Stream in das Pufferarray. Die Methode blockiert, wenn das Ende des Streams erreicht ist oder eine Ausnahme ausgelöst wird. Syntax:
    public int read(byte[] buffer int offset int maxlen)   Parameters :    buffer : the destination buffer into which the data is to be read offset : starting in the destination array - 'buffer'. maxlen : maximum length of array to be read   Return :    next 'maxlen' bytes of the data as an integer value return -1 is end of stream is reached   Exception :   ->   IOException :   if in case IO error occurs. ->   NullPointerException :   if buffer is null. ->   IndexOutOfBoundsException :   if offset is -ve or maxlen is -ve or maxlen > buffer.length - offset.  
    empfangen(int byte) : java.io.PipedInputStream.receive(int byte) empfängt Byte der Daten. Wenn keine Eingabe verfügbar ist, blockiert die Methode. Syntax:
    protected void receive(int byte)   Parameters :    byte : the bytes of the data received   Return :    void   Exception :   ->   IOException :   if in case IO error occurs or pipe is broken. 
    schließen() : java.io.PipedInputStream.close() Schließt den Piped Input Stream und gibt die zugewiesenen Ressourcen frei. Syntax:
    public void close()   Parameters :    --------------   Return :    void   Exception :   ->   IOException :   if in case IO error occurs. 
    connect(PipedOutputStream-Quelle) : java.io.PipedInputStream.connect(PipedOutputStream-Quelle) Verbindet den Piped Input Stream mit dem „Source“ Piped Output Stream und falls „Source“ Pipes mit einem anderen Stream ist, wird eine E/A-Ausnahme ausgelöst Syntax:
    public void connect(PipedOutputStream source)   Parameters :    source : the Piped Output Stream to be connected to   Return :    void   Exception :   ->   IOException :   if in case IO error occurs. 
    verfügbar() : java.io.PipedInputStream.available() gibt keine zurück. Anzahl der Bytes, die vom Eingabestrom gelesen werden können, ohne tatsächlich blockiert zu werden. Syntax:
    public int available()   Parameters :    -------------   Return :    no. of bytes that can be read from Input Stream without actually being blocked. 0 if the stream is already closed but by invoking close() method   Exception :   ->   IOException :   if in case IO error occurs. 
    Java-Programm, das die Funktionsweise der PipedInputStream-Klassenmethoden erklärt: Java
       // Java program illustrating the working of PipedInputStream   // connect() read(byte[] buffer int offset int maxlen)   // close() available()   import     java.io.*  ;   public     class   NewClass   {      public     static     void     main  (  String  []     args  )     throws     IOException      {      PipedInputStream     geek_input     =     new     PipedInputStream  ();      PipedOutputStream     geek_output     =     new     PipedOutputStream  ();      try      {      // Use of connect() : connecting geek_input with geek_output      geek_input  .  connect  (  geek_output  );      geek_output  .  write  (  71  );      geek_output  .  write  (  69  );      geek_output  .  write  (  69  );      geek_output  .  write  (  75  );      geek_output  .  write  (  83  );      // Use of available() :      System  .  out  .  println  (  'Use of available() : '     +     geek_input  .  available  ());      // Use of read(byte[] buffer int offset int maxlen) :      byte  []     buffer     =     new     byte  [  5  ]  ;      // destination 'buffer'      geek_input  .  read  (  buffer       0       5  );      String     str     =     new     String  (  buffer  );      System  .  out  .  println  (  'Using read(buffer offset maxlen) : '     +     str  );      // USe of close() method :      System  .  out  .  println  (  'Closing the stream'  );      geek_input  .  close  ();      }      catch     (  IOException     except  )      {      except  .  printStackTrace  ();      }      }   }   
    Ausgabe:
    Use of available() : 5 Using read(buffer offset maxlen) : GEEKS Closing the stream 
    Next Article: Java.io.PipedOutputStream-Klasse in Java Quiz erstellen