spring-framework / org.springframework.util / FastByteArrayOutputStream

FastByteArrayOutputStream

open class FastByteArrayOutputStream : OutputStream

A speedy alternative to java.io.ByteArrayOutputStream. Note that this variant does not extend ByteArrayOutputStream, unlike its sibling ResizableByteArrayOutputStream.

Unlike java.io.ByteArrayOutputStream, this implementation is backed by a java.util.LinkedList of byte[] instead of 1 constantly resizing byte[]. It does not copy buffers when it gets expanded.

The initial buffer is only created when the stream is first written. There is also no copying of the internal buffer if its contents is extracted with the #writeTo(OutputStream) method.

Author
Craig Andrews

Author
Juergen Hoeller

Since
4.2

See Also
#resizeResizableByteArrayOutputStream

Constructors

<init>

FastByteArrayOutputStream()

Create a new FastByteArrayOutputStream with the default initial capacity of 256 bytes.

FastByteArrayOutputStream(initialBlockSize: Int)

Create a new FastByteArrayOutputStream with the specified initial capacity.

Functions

close

open fun close(): Unit

getInputStream

open fun getInputStream(): InputStream

Get an InputStream to retrieve the data in this OutputStream.

Note that if any methods are called on the OutputStream (including, but not limited to, any of the write methods, #reset(), #toByteArray(), and #toByteArrayUnsafe()) then the java.io.InputStream's behavior is undefined.

reset

open fun reset(): Unit

Reset the contents of this FastByteArrayOutputStream.

All currently accumulated output in the output stream is discarded. The output stream can be used again.

resize

open fun resize(targetCapacity: Int): Unit

Resize the internal buffer size to a specified capacity.

size

open fun size(): Int

Return the number of bytes stored in this FastByteArrayOutputStream.

toByteArray

open fun toByteArray(): ByteArray

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.

toByteArrayUnsafe

open fun toByteArrayUnsafe(): ByteArray

Convert the stream's data to a byte array and return the byte array.

Also replaces the internal structures with the byte array to conserve memory: if the byte array is being made anyways, mind as well as use it. This approach also means that if this method is called twice without any writes in between, the second call is a no-op.

This method is "unsafe" as it returns the internal buffer. Callers should not modify the returned buffer.

toString

open fun toString(): String

Convert the buffer's contents into a string decoding bytes using the platform's default character set. The length of the new String is a function of the character set, and hence may not be equal to the size of the buffer.

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

write

open fun write(datum: Int): Unit
open fun write(data: ByteArray, offset: Int, length: Int): Unit

writeTo

open fun writeTo(out: OutputStream): Unit

Write the buffers content to the given OutputStream.