public class BufferedInputStream extends FilterInputStream
BufferedInputStream
is a class which takes an input stream and
buffers the input. In this way, costly interaction with the original
input stream can be minimized by reading buffered amounts of data
infrequently. The drawback is that extra space is required to hold the buffer
and that copying takes place when reading that buffer.BufferedOutputStream
Modifier and Type | Field and Description |
---|---|
protected byte[] |
buf
The buffer containing the current bytes read from the target InputStream.
|
protected int |
count
The total number of bytes inside the byte array
buf . |
protected int |
marklimit
The current limit, which when passed, invalidates the current mark.
|
protected int |
markpos
The currently marked position.
|
protected int |
pos
The current position within the byte array
buf . |
in
Constructor and Description |
---|
BufferedInputStream(InputStream in)
Constructs a new
BufferedInputStream on the InputStream
in . |
BufferedInputStream(InputStream in,
int size)
Constructs a new BufferedInputStream on the InputStream
in . |
Modifier and Type | Method and Description |
---|---|
int |
available()
Answers an int representing the number of bytes that are available before
this BufferedInputStream will block.
|
void |
close()
Close this BufferedInputStream.
|
void |
mark(int readlimit)
Set a Mark position in this BufferedInputStream.
|
boolean |
markSupported()
Answers a boolean indicating whether or not this BufferedInputStream
supports mark() and reset().
|
int |
read()
Reads a single byte from this BufferedInputStream and returns the result
as an int.
|
int |
read(byte[] buffer,
int offset,
int length)
Reads at most
length bytes from this BufferedInputStream and
stores them in byte array buffer starting at offset
offset . |
void |
reset()
Reset this BufferedInputStream to the last marked location.
|
long |
skip(long amount)
Skips
amount number of bytes in this BufferedInputStream. |
read
protected volatile byte[] buf
protected int count
buf
.protected int marklimit
protected int markpos
protected int pos
buf
.public BufferedInputStream(InputStream in)
BufferedInputStream
on the InputStream
in
. The default buffer size (8Kb) is allocated and all reads
can now be filtered through this stream.in
- the InputStream to buffer reads on.public BufferedInputStream(InputStream in, int size)
in
.
The buffer size is specified by the parameter size
and all
reads can now be filtered through this BufferedInputStream.in
- the InputStream to buffer reads on.size
- the size of buffer to allocate.public int available() throws IOException
available
in class FilterInputStream
IOException
- If an error occurs in this stream.public void close() throws IOException
close
in class FilterInputStream
IOException
- If an error occurs attempting to close this stream.public void mark(int readlimit)
readLimit
indicates how many bytes can be read before a mark
is invalidated. Sending reset() will reposition the Stream back to the
marked position provided readLimit
has not been surpassed.
The underlying buffer may be increased in size to allow
readlimit
number of bytes to be supported.mark
in class FilterInputStream
readlimit
- the number of bytes to be able to read before invalidating the
mark.public boolean markSupported()
true
.markSupported
in class FilterInputStream
true
for BufferedInputStreams.public int read() throws IOException
read
in class FilterInputStream
IOException
- If the stream is already closed or another IOException
occurs.public int read(byte[] buffer, int offset, int length) throws IOException
length
bytes from this BufferedInputStream and
stores them in byte array buffer
starting at offset
offset
. Answer the number of bytes actually read or -1 if no
bytes were read and end of stream was encountered. If all the buffered
bytes have been used, a mark has not been set, and the requested number
of bytes is larger than the receiver's buffer size, this implementation
bypasses the buffer and simply places the results directly into
buffer
.read
in class FilterInputStream
buffer
- the byte array in which to store the read bytes.offset
- the offset in buffer
to store the read bytes.length
- the maximum number of bytes to store in buffer
.IOException
- If the stream is already closed or another IOException
occurs.public void reset() throws IOException
readlimit
has been passed or no mark
has been
set, throw IOException. This implementation resets the target stream.reset
in class FilterInputStream
IOException
- If the stream is already closed or another IOException
occurs.public long skip(long amount) throws IOException
amount
number of bytes in this BufferedInputStream.
Subsequent read()
's will not return these bytes unless
reset()
is used.skip
in class FilterInputStream
amount
- the number of bytes to skip.IOException
- If the stream is already closed or another IOException
occurs.