Class QueueOutputStream

java.lang.Object
java.io.OutputStream
org.apache.commons.io.output.QueueOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public class QueueOutputStream extends OutputStream
Simple alternative to JDK PipedOutputStream; queue input stream provides what's written in queue output stream.

Example usage:

 QueueOutputStream outputStream = new QueueOutputStream();
 QueueInputStream inputStream = outputStream.newPipeInputStream();

 outputStream.write("hello world".getBytes(UTF_8));
 inputStream.read();
 
Unlike JDK PipedInputStream and PipedOutputStream, queue input/output streams may be used safely in a single thread or multiple threads. Also, unlike JDK classes, no special meaning is attached to initial or current thread. Instances can be used longer after initial threads exited.

Closing a QueueOutputStream has no effect. The methods in this class can be called after the stream has been closed without generating an IOException.

Since:
2.9.0
See Also:
  • Field Details

  • Constructor Details

    • QueueOutputStream

      public QueueOutputStream()
      Constructs a new instance with no limit to internal buffer size.
    • QueueOutputStream

      public QueueOutputStream(BlockingQueue<Integer> blockingQueue)
      Constructs a new instance with given buffer.
      Parameters:
      blockingQueue - backing queue for the stream
  • Method Details

    • newQueueInputStream

      public QueueInputStream newQueueInputStream()
      Constructs a new QueueInputStream instance connected to this. Writes to this output stream will be visible to the input stream.
      Returns:
      QueueInputStream connected to this stream
    • write

      public void write(int b) throws InterruptedIOException
      Writes a single byte.
      Specified by:
      write in class OutputStream
      Throws:
      InterruptedIOException - if the thread is interrupted while writing to the queue.