public class UnsafeByteArrayOutputStream
extends java.io.ByteArrayOutputStream
An unsynchronized implementation of ByteArrayOutputStream that will return the backing byte array if its length == size(). This avoids unneeded array copy where the BOS is simply being used to extract a byte array of known length from a 'serialized to stream' method.
Unless the final length can be accurately predicted the only performance this will yield is due to unsynchronized methods.
Constructor and Description |
---|
UnsafeByteArrayOutputStream() |
UnsafeByteArrayOutputStream(int size) |
Modifier and Type | Method and Description |
---|---|
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. |
int |
size()
Returns the current size of the buffer.
|
byte[] |
toByteArray()
Creates a newly allocated byte array.
|
void |
write(byte[] b,
int off,
int len)
Writes
len bytes from the specified byte array
starting at offset off to this byte array output stream. |
void |
write(int b)
Writes the specified byte to this byte array output stream.
|
void |
writeTo(java.io.OutputStream out)
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) . |
public UnsafeByteArrayOutputStream()
public UnsafeByteArrayOutputStream(int size)
public void write(int b)
write
in class java.io.ByteArrayOutputStream
b
- the byte to be written.public void write(byte[] b, int off, int len)
len
bytes from the specified byte array
starting at offset off
to this byte array output stream.write
in class java.io.ByteArrayOutputStream
b
- the data.off
- the start offset in the data.len
- the number of bytes to write.public void writeTo(java.io.OutputStream out) throws java.io.IOException
out.write(buf, 0, count)
.writeTo
in class java.io.ByteArrayOutputStream
out
- the output stream to which to write the data.java.io.IOException
- if an I/O error occurs.public void reset()
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.reset
in class java.io.ByteArrayOutputStream
ByteArrayInputStream.count
public byte[] toByteArray()
toByteArray
in class java.io.ByteArrayOutputStream
ByteArrayOutputStream.size()
public int size()
size
in class java.io.ByteArrayOutputStream
count
field, which is the number
of valid bytes in this output stream.ByteArrayOutputStream.count