Open In App

Java.io.PipedOutputStream Class in Java

Java.io.PipedInputStream class in Java



Pipes in IO provide a link between two threads running in JVM at the same time. So, Pipes are used both as source or destination.  

Declaration:  



public class PipedOutputStream
extends OutputStream

Constructor:  

Methods: 

write() : java.io.PipedOutputStream.write(int byte) writes a specified byte to the Piped Output Stream. 

Syntax : 

public void write(int byte)

Parameters :
byte : byte to be written

Return : void
Exception :
-> IOException : if in case IO error occurs.

write(byte[] buffer, int offset, int maxlen) : java.io.PipedOutputStream.write(byte[] buffer, int offset, int maxlen) writes maxlen bytes of the data from buffer to the Piped Output Stream. The method blocks if no bytes are written to the Stream. 

Syntax : 

public void write(byte[] buffer, int offset, int maxlen)

Parameters :
buffer : data of the buffer
offset : starting in the destination array - 'buffer'.
maxlen : maximum length of array to be read

Return : void
Exception :
-> IOException : if in case IO error occurs.




// Java program illustrating the working of PipedInputStream
// write(byte[] buffer, int offset, int maxlen)
 
import java.io.*;
public class NewClass
{
    public static void main(String[] args) throws IOException
    {
        PipedInputStream geek_input = new PipedInputStream();
        PipedOutputStream geek_output = new PipedOutputStream();
 
        // Use of connect() : connecting geek_input with geek_output
        geek_input.connect(geek_output);
 
        byte[] buffer = {'J', 'A', 'V', 'A'};
 
        // Use of write(byte[] buffer, int offset, int maxlen)
        geek_output.write(buffer, 0, 4);
        int a = 5;
        System.out.print("Use of write(buffer, offset, maxlen) : ");
        while(a>0)
        {
            System.out.print(" " + (char) geek_input.read());
              a--;
        }
    }
}

Output: 

Use of write(buffer, offset, maxlen) :  J A V A
public void close()
Parameters :
--------------
Return :
void
Exception :
-> IOException : if in case IO error occurs.
public void connect(PipedInputStream destination)
Parameters :
destination : the Piped Input Stream to be connected to
Return :
void
Exception :
-> IOException : if in case IO error occurs.
public void flush()
Parameters :
------------
Return :
void
Exception :
-> IOException : if in case IO error occurs.

Java code illustrating the working of PipedOutputStream class methods : 




// Java program illustrating the working of PipedInputStream
// write(), write(byte[] buffer, int offset, int maxlen),
// close(), flush(), connect()
 
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 write(int byte) :
            geek_output.write(71);
            geek_output.write(69);
            geek_output.write(69);
            geek_output.write(75);
            geek_output.write(83);
 
            // Use of flush() method :
            geek_output.flush();
            System.out.println("Use of flush() method : ");
 
            int i = 5;
            while(i > 0)
            {
                System.out.print(" " + (char) geek_input.read());
                i--;
            }
 
            // USe of close() method :
            System.out.println("\nClosing the Output stream");
            geek_output.close();
 
        }
        catch (IOException except)
        {
            except.printStackTrace();
        }
    }
}

Output: 

Use of flush() method : 
G E E K S
Closing the Output stream


 


Article Tags :