Class NonBlockingByteArrayOutputStream

    • Field Detail

      • m_aBuf

        protected byte[] m_aBuf
        The buffer where data is stored.
      • m_nCount

        protected int m_nCount
        The number of valid bytes in the buffer.
    • Constructor Detail

      • NonBlockingByteArrayOutputStream

        public NonBlockingByteArrayOutputStream()
        Creates a new byte array output stream. The buffer capacity is initially 32 bytes, though its size increases if necessary.
      • NonBlockingByteArrayOutputStream

        public NonBlockingByteArrayOutputStream​(@Nonnegative
                                                int nSize)
        Creates a new byte array output stream, with a buffer capacity of the specified size, in bytes.
        Parameters:
        nSize - the initial size.
        Throws:
        IllegalArgumentException - if size is negative.
    • Method Detail

      • write

        public void write​(int b)
        Writes the specified byte to this byte array output stream.
        Specified by:
        write in class OutputStream
        Parameters:
        b - the byte to be written.
      • write

        public void write​(@Nonnull
                          byte[] aBuf,
                          int nOfs,
                          int nLen)
        Writes nLen bytes from the specified byte array starting at offset nOfs to this byte array output stream.
        Overrides:
        write in class OutputStream
        Parameters:
        aBuf - the data.
        nOfs - the start offset in the data.
        nLen - the number of bytes to write.
      • writeTo

        public void writeTo​(@Nonnull @WillNotClose
                            OutputStream aOS)
                     throws IOException
        Writes the complete contents of this byte array output stream to the specified output stream argument, as if by calling the output stream's write method using out.write(buf, 0, count). The content of this stream is not altered by calling this method.
        Specified by:
        writeTo in interface IWriteToStream
        Parameters:
        aOS - the output stream to which to write the data. May not be null.
        Throws:
        IOException - if an I/O error occurs.
      • reset

        public void reset()
        Resets the count field of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded. The output stream can be used again, reusing the already allocated buffer space.
      • toByteArray

        @Nonnull
        @ReturnsMutableCopy
        public byte[] toByteArray()
        Creates a newly allocated byte array. Its size is the current size of this output stream and the valid contents of the buffer have been copied into it.
        If you are sure, that this OutputStream is not altered anymore, it maybe preferred to use getBufferOrCopy() because it avoids copying the internal buffer if the size matches exactly.
        Returns:
        the current contents of this output stream, as a byte array.
      • getByteAt

        public byte getByteAt​(@Nonnegative
                              int nIndex)
        Get the byte at the specified index
        Parameters:
        nIndex - The index to use. Must be ≥ 0 and < count
        Returns:
        The byte at the specified position
      • getBufferSize

        @Nonnegative
        public int getBufferSize()
        Returns:
        The number of pre-allocated bytes. Always ≥ 0.
      • size

        @Nonnegative
        public int size()
        Returns the current size of the buffer.
        Specified by:
        size in interface IHasSize
        Returns:
        the value of the count field, which is the number of valid bytes in this output stream.
      • startsWith

        public boolean startsWith​(@Nonnull
                                  byte[] aBytes)
      • getAsString

        @Nonnull
        public String getAsString​(@Nonnull
                                  Charset aCharset)
        Converts the buffer's contents into a string by decoding the bytes using the specified charsetName. The length of the new String is a function of the charset, and hence may not be equal to the length of the byte array.

        This method always replaces malformed-input and unmappable-character sequences with this charset's default replacement string. The CharsetDecoder class should be used when more control over the decoding process is required.

        Parameters:
        aCharset - the charset to be used. May not be null.
        Returns:
        String decoded from the buffer's contents.
      • getAsString

        @Nonnull
        public String getAsString​(@Nonnegative
                                  int nLength,
                                  @Nonnull
                                  Charset aCharset)
        Converts the buffer's contents into a string by decoding the bytes using the specified charsetName. The length of the new String is a function of the charset, and hence may not be equal to the length of the byte array.

        This method always replaces malformed-input and unmappable-character sequences with this charset's default replacement string. The CharsetDecoder class should be used when more control over the decoding process is required.

        Parameters:
        nLength - The number of bytes to be converted to a String. Must be ≥ 0.
        aCharset - the charset to be used. May not be null.
        Returns:
        String decoded from the buffer's contents.
      • getAsString

        @Nonnull
        public String getAsString​(@Nonnegative
                                  int nOfs,
                                  @Nonnegative
                                  int nLength,
                                  @Nonnull
                                  Charset aCharset)
        Converts the buffer's contents into a string by decoding the bytes using the specified charsetName. The length of the new String is a function of the charset, and hence may not be equal to the length of the byte array.

        This method always replaces malformed-input and unmappable-character sequences with this charset's default replacement string. The CharsetDecoder class should be used when more control over the decoding process is required.

        Parameters:
        nOfs - The start index to use
        nLength - The number of bytes to be converted to a String. Must be ≥ 0.
        aCharset - the charset to be used. May not be null.
        Returns:
        String decoded from the buffer's contents.
      • directGetBuffer

        @Nonnull
        @ReturnsMutableObject
        public byte[] directGetBuffer()
        Returns:
        The internally used byte buffer. Never null. Handle with care!
      • close

        public void close()
        Closing a ByteArrayOutputStream has no effect. The methods in this class can be called after the stream has been closed without generating an IOException. This operation does nothing on this class.
        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable
        Overrides:
        close in class OutputStream
      • getAsInputStream

        @Nonnull
        public NonBlockingByteArrayInputStream getAsInputStream()
        Create a new InputStream from the contained byte array WITHOUT COPYING it. So please be careful as this method is not thread-safe and any modifications done later on this object are NOT reflected in the InputStream!
        This is a shortcut for new NonBlockingByteArrayInputStream (directGetBuffer (), 0, getSize ())
        Returns:
        A new NonBlockingByteArrayInputStream.
        Since:
        9.0.0