public class UnsafeByteArrayInputStream extends InputStream
ByteArrayInputStream
uses a given buffer as a
source of an InputStream. Unlike ByteArrayInputStream, this class does not
"waste" memory by creating a local copy of the given buffer, but rather uses
the given buffer as is. Hence the name Unsafe. While using this class one
should remember that the byte[] buffer memory is shared and might be changed
from outside.
For reuse-ability, a call for reInit(byte[])
can be called, and
initialize the stream with a new buffer.Constructor and Description |
---|
UnsafeByteArrayInputStream()
Creates a new instance by not using any byte[] up front.
|
UnsafeByteArrayInputStream(byte[] buffer)
Creates an UnsafeByteArrayInputStream which uses a given byte array as
the source of the stream.
|
UnsafeByteArrayInputStream(byte[] buffer,
int startPos,
int endPos)
Creates an UnsafeByteArrayInputStream which uses a given byte array as
the source of the stream, at the specific range: [startPos, endPos)
|
Modifier and Type | Method and Description |
---|---|
int |
available() |
void |
mark(int readlimit) |
boolean |
markSupported() |
int |
read()
Read a byte.
|
void |
reInit(byte[] buffer)
Initialize the stream with a given buffer, using the default limits of
[0, buffer.length)
|
void |
reInit(byte[] buffer,
int startPos,
int endPos)
Initialize the stream with a given byte array as the source of the
stream, at the specific range: [startPos, endPos)
|
void |
reset()
Resets the stream back to its original state.
|
close, read, read, skip
public UnsafeByteArrayInputStream()
reInit
methods before you consume any byte from this instance.new byte[0]
or something. Obviously in that case, one will
call either reInit
methods before using the class.public UnsafeByteArrayInputStream(byte[] buffer)
buffer
- byte array used as the source of this streampublic UnsafeByteArrayInputStream(byte[] buffer, int startPos, int endPos)
buffer
- byte array used as the source of this streamstartPos
- first index (inclusive) to the data lying in the given bufferendPos
- an index (exclusive) where the data ends. data @
buffer[endPos] will never be readpublic void mark(int readlimit)
mark
in class InputStream
public boolean markSupported()
markSupported
in class InputStream
public void reInit(byte[] buffer)
buffer
- byte array used as the source of this streampublic void reInit(byte[] buffer, int startPos, int endPos)
buffer
- byte array used as the source of this streamstartPos
- first index (inclusive) to the data lying in the given bufferendPos
- an index (exclusive) where the data ends. data @
buffer[endPos] will never be readpublic int available() throws IOException
available
in class InputStream
IOException
public int read() throws IOException
read
in class InputStream
IOException
public void reset() throws IOException
reset
in class InputStream
IOException