Class ByteBufferOutputStream2

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

    public class ByteBufferOutputStream2
    extends java.io.OutputStream
    This class implements an output stream in which the data is written into a list of ByteBuffer, the buffer list automatically grows as data is written to it, the buffers are taken from the supplied ByteBufferPool or freshly allocated if one is not supplied. Designed to mimic ByteArrayOutputStream but with better memory usage, and less copying.
    • Constructor Detail

      • ByteBufferOutputStream2

        public ByteBufferOutputStream2()
      • ByteBufferOutputStream2

        public ByteBufferOutputStream2​(ByteBufferPool bufferPool,
                                       boolean direct)
    • Method Detail

      • takeByteBuffer

        public java.nio.ByteBuffer takeByteBuffer()
        Take the combined buffer containing all content written to the OutputStream. The caller is responsible for releasing this ByteBuffer back into the ByteBufferPool.
        Returns:
        a buffer containing all content written to the OutputStream.
      • toByteBuffer

        public java.nio.ByteBuffer toByteBuffer()
        Take the combined buffer containing all content written to the OutputStream. The returned buffer is still contained within the OutputStream and will be released back to the ByteBufferPool when the OutputStream is closed.
        Returns:
        a buffer containing all content written to the OutputStream.
      • toByteArray

        public byte[] toByteArray()
        Returns:
        a newly allocated byte array containing all content written into the OutputStream.
      • size

        public int size()
      • write

        public void write​(int b)
        Specified by:
        write in class java.io.OutputStream
      • write

        public void write​(byte[] b,
                          int off,
                          int len)
        Overrides:
        write in class java.io.OutputStream
      • write

        public void write​(java.nio.ByteBuffer buffer)
      • writeTo

        public void writeTo​(java.nio.ByteBuffer buffer)
      • writeTo

        public void writeTo​(java.io.OutputStream out)
                     throws java.io.IOException
        Throws:
        java.io.IOException
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.OutputStream
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object