public final class ByteArrayBuilder extends OutputStream
ByteArrayOutputStream
in usage, but more geared to Jackson use cases internally.
Specific changes include segment storage (no need to have linear
backing buffer, can avoid reallocs, copying), as well API
not based on OutputStream
. In short, a very much
specialized builder object.
Since version 1.5, also implements OutputStream
to allow
efficient aggregation of output content as a byte array, similar
to how ByteArrayOutputStream
works, but somewhat more
efficiently for many use cases.
Constructor and Description |
---|
ByteArrayBuilder() |
ByteArrayBuilder(BufferRecycler br) |
ByteArrayBuilder(BufferRecycler br,
int firstBlockSize) |
ByteArrayBuilder(int firstBlockSize) |
Modifier and Type | Method and Description |
---|---|
void |
append(int i) |
void |
appendThreeBytes(int b24) |
void |
appendTwoBytes(int b16) |
void |
close() |
byte[] |
completeAndCoalesce(int lastBlockLength)
Method that will complete "manual" output process, coalesce
content (if necessary) and return results as a contiguous buffer.
|
byte[] |
finishCurrentSegment()
Method called when the current segment buffer is full; will
append to current contents, allocate a new segment buffer
and return it
|
void |
flush() |
byte[] |
getCurrentSegment() |
int |
getCurrentSegmentLength() |
void |
release()
Clean up method to call to release all buffers this object may be
using.
|
void |
reset() |
byte[] |
resetAndGetFirstSegment()
Method called when starting "manual" output: will clear out
current state and return the first segment buffer to fill
|
void |
setCurrentSegmentLength(int len) |
byte[] |
toByteArray()
Method called when results are finalized and we can get the
full aggregated result buffer to return to the caller
|
void |
write(byte[] b) |
void |
write(byte[] b,
int off,
int len) |
void |
write(int b) |
public ByteArrayBuilder()
public ByteArrayBuilder(BufferRecycler br)
public ByteArrayBuilder(int firstBlockSize)
public ByteArrayBuilder(BufferRecycler br, int firstBlockSize)
public void reset()
public void release()
public void append(int i)
public void appendTwoBytes(int b16)
public void appendThreeBytes(int b24)
public byte[] toByteArray()
public byte[] resetAndGetFirstSegment()
public byte[] finishCurrentSegment()
public byte[] completeAndCoalesce(int lastBlockLength)
lastBlockLength
- Amount of content in the current segment
buffer.public byte[] getCurrentSegment()
public void setCurrentSegmentLength(int len)
public int getCurrentSegmentLength()
public void write(byte[] b)
write
in class OutputStream
public void write(byte[] b, int off, int len)
write
in class OutputStream
public void write(int b)
write
in class OutputStream
public void close()
close
in interface Closeable
close
in interface AutoCloseable
close
in class OutputStream
public void flush()
flush
in interface Flushable
flush
in class OutputStream