FileDocCategorySizeDatePackage
PipedWriter.javaAPI DocJava SE 6 API5696Tue Jun 10 00:25:34 BST 2008java.io

PipedWriter

public class PipedWriter extends Writer
Piped character-output streams.
version
1.19, 06/06/28
author
Mark Reinhold
since
JDK1.1

Fields Summary
private PipedReader
sink
private boolean
closed
Constructors Summary
public PipedWriter(PipedReader snk)
Creates a piped writer connected to the specified piped reader. Data characters written to this stream will then be available as input from snk.

param
snk The piped reader to connect to.
exception
IOException if an I/O error occurs.


                                                           
          
	connect(snk);
    
public PipedWriter()
Creates a piped writer that is not yet connected to a piped reader. It must be connected to a piped reader, either by the receiver or the sender, before being used.

see
java.io.PipedReader#connect(java.io.PipedWriter)
see
java.io.PipedWriter#connect(java.io.PipedReader)

    
Methods Summary
public voidclose()
Closes this piped output stream and releases any system resources associated with this stream. This stream may no longer be used for writing characters.

exception
IOException if an I/O error occurs.

        closed = true;
	if (sink != null) {
	    sink.receivedLast();
	}
    
public synchronized voidconnect(java.io.PipedReader snk)
Connects this piped writer to a receiver. If this object is already connected to some other piped reader, an IOException is thrown.

If snk is an unconnected piped reader and src is an unconnected piped writer, they may be connected by either the call:

src.connect(snk)
or the call:
snk.connect(src)
The two calls have the same effect.

param
snk the piped reader to connect to.
exception
IOException if an I/O error occurs.

        if (snk == null) {
            throw new NullPointerException();
        } else if (sink != null || snk.connected) {
	    throw new IOException("Already connected");
	} else if (snk.closedByReader || closed) {
            throw new IOException("Pipe closed");
        }
        
	sink = snk;
	snk.in = -1;
	snk.out = 0;
        snk.connected = true;
    
public synchronized voidflush()
Flushes this output stream and forces any buffered output characters to be written out. This will notify any readers that characters are waiting in the pipe.

exception
IOException if the pipe is closed, or an I/O error occurs.

	if (sink != null) {
            if (sink.closedByReader || closed) {
                throw new IOException("Pipe closed");
            }            
            synchronized (sink) {
                sink.notifyAll();
            }
	}
    
public voidwrite(int c)
Writes the specified char to the piped output stream. If a thread was reading data characters from the connected piped input stream, but the thread is no longer alive, then an IOException is thrown.

Implements the write method of Writer.

param
c the char to be written.
exception
IOException if the pipe is broken, {@link #connect(java.io.PipedReader) unconnected}, closed or an I/O error occurs.

        if (sink == null) {
            throw new IOException("Pipe not connected");
        }
	sink.receive(c);
    
public voidwrite(char[] cbuf, int off, int len)
Writes len characters from the specified character array starting at offset off to this piped output stream. This method blocks until all the characters are written to the output stream. If a thread was reading data characters from the connected piped input stream, but the thread is no longer alive, then an IOException is thrown.

param
cbuf the data.
param
off the start offset in the data.
param
len the number of characters to write.
exception
IOException if the pipe is broken, {@link #connect(java.io.PipedReader) unconnected}, closed or an I/O error occurs.

        if (sink == null) {
            throw new IOException("Pipe not connected");
        } else if ((off | len | (off + len) | (cbuf.length - (off + len))) < 0) {
	    throw new IndexOutOfBoundsException();
	}
	sink.receive(cbuf, off, len);