public class

PipedReader

extends Reader
java.lang.Object
   ↳ java.io.Reader
     ↳ java.io.PipedReader

Class Overview

Receives information on a communications pipe. When two threads want to pass data back and forth, one creates a piped writer and the other creates a piped reader.

See Also

Summary

[Expand]
Inherited Fields
From class java.io.Reader
Public Constructors
PipedReader()
Constructs a new unconnected PipedReader.
PipedReader(PipedWriter out)
Constructs a new PipedReader connected to the PipedWriter out.
Public Methods
synchronized void close()
Closes this reader.
void connect(PipedWriter src)
Connects this PipedReader to a PipedWriter.
synchronized int read(char[] buffer, int offset, int count)
Reads at most count characters from this reader and stores them in the character array buffer starting at offset.
int read()
Reads a single character from this reader and returns it as an integer with the two higher-order bytes set to 0.
synchronized boolean ready()
Indicates whether this reader is ready to be read without blocking.
[Expand]
Inherited Methods
From class java.io.Reader
From class java.lang.Object
From interface java.io.Closeable
From interface java.lang.Readable

Public Constructors

public PipedReader ()

Since: API Level 1

Constructs a new unconnected PipedReader. The resulting reader must be connected to a PipedWriter before data may be read from it.

public PipedReader (PipedWriter out)

Since: API Level 1

Constructs a new PipedReader connected to the PipedWriter out. Any data written to the writer can be read from the this reader.

Parameters
out the PipedWriter to connect to.
Throws
IOException if out is already connected.

Public Methods

public synchronized void close ()

Since: API Level 1

Closes this reader. This implementation releases the buffer used for the pipe and notifies all threads waiting to read or write.

Throws
IOException if an error occurs while closing this reader.

public void connect (PipedWriter src)

Since: API Level 1

Connects this PipedReader to a PipedWriter. Any data written to the writer becomes readable in this reader.

Parameters
src the writer to connect to.
Throws
IOException if this reader is closed or already connected, or if src is already connected.

public synchronized int read (char[] buffer, int offset, int count)

Since: API Level 1

Reads at most count characters from this reader and stores them in the character array buffer starting at offset. If there is no data in the pipe, this method blocks until at least one byte has been read, the end of the reader is detected or an exception is thrown.

Separate threads should be used to read from a PipedReader and to write to the connected PipedWriter. If the same thread is used, a deadlock may occur.

Parameters
buffer the character array in which to store the characters read.
offset the initial position in bytes to store the characters read from this reader.
count the maximum number of characters to store in buffer.
Returns
  • the number of characters read or -1 if the end of the reader has been reached.
Throws
IndexOutOfBoundsException if offset < 0 or count < 0, or if offset + count is greater than the size of buffer.
InterruptedIOException if the thread reading from this reader is interrupted.
IOException if this reader is closed or not connected to a writer, or if the thread writing to the connected writer is no longer alive.

public int read ()

Since: API Level 1

Reads a single character from this reader and returns it as an integer with the two higher-order bytes set to 0. Returns -1 if the end of the reader has been reached. If there is no data in the pipe, this method blocks until data is available, the end of the reader is detected or an exception is thrown.

Separate threads should be used to read from a PipedReader and to write to the connected PipedWriter. If the same thread is used, a deadlock may occur.

Returns
  • the character read or -1 if the end of the reader has been reached.
Throws
IOException if this reader is closed or some other I/O error occurs.

public synchronized boolean ready ()

Since: API Level 1

Indicates whether this reader is ready to be read without blocking. Returns true if this reader will not block when read is called, false if unknown or blocking will occur. This implementation returns true if the internal buffer contains characters that can be read.

Returns
  • always false.
Throws
IOException if this reader is closed or not connected, or if some other I/O error occurs.