Hurry! Try our new Interactive Courses for FREE. 🥳   🚀

Java PipedReader Class

In this tutorial, we will learn about the PipedReader class in Java. The PipedReader class is used to read the data of a pipe and this data is in the format of a stream of characters. While implementing the PipedReader we must take care of that this must be connected to the PipedWriter and generally PipedReader and PipedWriter used by different threads rather than running on the same thread.

enlightenedNote: PipedReader must be connected to a PipedWriter.

Syntax

This is the syntax declaration of PipedReader class and we can see it is extending Reader class.

public class PipedReader extends Reader

The Constructors of PipedReader Class

All the variants of the constructor are given in the table below.

Constructor

Description

PipedReader(int pipeSize)

It creates a PipedReader so that it is not yet connected and uses the specified pipe size for the pipe's buffer.

PipedReader(PipedWriter src)

It creates a PipedReader so that it is connected to the piped writer src.

PipedReader(PipedWriter src, int pipeSize)

It creates a PipedReader so that it is connected to the piped writer src and uses the specified pipe size for the pipe's buffer.

PipedReader()

It creates a PipedReader so that it is not yet connected.

Methods of PipedReader Class

The following are the given methods are given below.

Method Description
void close() This method closes this piped stream and releases any system resources associated with the stream.
void connect(PipedWriter src) This method causes this piped reader to be connected to the piped writer src.
int read() This method reads the next character of data from this piped stream.
int read(char[] cbuf, int off, int len) This method reads up to len characters of data from this piped stream into an array of characters.
boolean ready() This method tells whether this stream is ready to be read.

Example: PipedReader read() Method

In this example, we are going to implement read() method from the PipedReeader class. Firstly we created objects for both the classes PipedReader and PipedWriter, and then connect them using connect() method. After this, we are simply writing and reading using the read() and write() method of PipedReader and PipedWriter class.

package studytonight;
import java.io.PipedReader;
import java.io.PipedWriter;
public class StudyTonight 
{
	public static void main(String args[])
	{
		try
		{
			PipedReader reader = new PipedReader(); 
			PipedWriter writer = new PipedWriter(); 
			reader.connect(writer); 			
			writer.write(72); 
			System.out.println((char)reader.read()); 
			writer.write(69); 
			System.out.println((char)reader.read()); 
			writer.write(76); 
			System.out.println( (char)reader.read());   
			writer.write(76); 
			System.out.println( (char)reader.read());   
			writer.write(79); 
			System.out.println( (char)reader.read());   
		}
		catch(Exception e)
		{
			System.out.println("Error: "+e.toString());
		}
	}
}


H
E
L
L
O

Example: Read Array using PipedReader

It is a simple Java PipedReader example, we are reading data from the array of characters. As we stated earlier we must connect PipedReader with PipedWriter, in this program, we are connecting PipedWriter writer using the connect() method. After connecting it we are using the overloaded method public int read(char[] arr, int offset, int maxlen), here arr is the source of data, offset indicates the starting position of the source from where we will start reading data. maxlength is the length of the data to be read. For each call of this method, it will return a character on that index. When the index goes to the end of the source stream this method will return -1.

package studytonight;
import java.io.PipedReader;
import java.io.PipedWriter;
public class StudyTonight 
{
	public static void main(String args[])
	{
		try
		{
			PipedReader reader = new PipedReader(); 
			PipedWriter writer = new PipedWriter(); 
			reader.connect(writer); 
			char[] arr = {'H', 'E', 'L', 'L', 'O'}; 
			writer.write(arr, 0, 5); 
			while(true) 
			{ 
				System.out.print((char) reader.read());           
			} 
		}
		catch(Exception e)
		{
			System.out.println("Error: "+e.toString());
		}
	}
}


HELLO

Conclusion

In this article, we learned about the PipedReader class in Java. The PipedReader class is used to read the data of a pipe and this data is in the format of a stream of characters. PipedReader must be connected to a PipedWriter.