java.lang.Object | +--java.io.InputStream | +--java.io.FilterInputStream | +--java.io.BufferedInputStream
byte[] | buf The buffer used for storing data from the underlying stream. |
int | count The number of valid bytes currently in the buffer. |
int | marklimit This is the maximum number of bytes than can be read after a
call to |
int | markpos The value of |
int | pos The index of the next character that will by read from the buffer. |
BufferedInputStream(java.io.InputStream in) This method initializes a new |
BufferedInputStream(java.io.InputStream in, int size) This method initializes a new |
synchronized int | available() This method returns the number of bytes that can be read from this stream before a read can block. |
void | close() This method closes the underlying input stream and frees any resources associated with it. |
synchronized void | mark(int readlimit) This method marks a position in the input to which the stream can be
"reset" by calling the |
boolean | markSupported() This method returns |
synchronized int | read() This method reads an unsigned byte from the input stream and returns it as an int in the range of 0-255. |
synchronized int | read(byte[] b, int off, int len) This method reads bytes from a stream and stores them into a caller supplied buffer. |
synchronized void | reset() This method resets a stream to the point where the |
synchronized long | skip(long n) This method skips the specified number of bytes in the stream. |
protected byte[] buf
protected int count
protected int marklimit
mark()
before the mark can be discarded.
After this may bytes are read, the reset()
method
may not be called successfully.
protected int markpos
pos
when the mark()
method was
called.
This is set to -1 if there is no mark set.
protected int pos
pos == count
, the buffer is empty.
public BufferedInputStream(java.io.InputStream in)
BufferedInputStream
that will
read from the specified subordinate stream with a default buffer size
of 2048 bytes
in
- The subordinate stream to read frompublic BufferedInputStream(java.io.InputStream in, int size)
BufferedInputStream
that will
read from the specified subordinate stream with a buffer size that
is specified by the caller.
in
- The subordinate stream to read fromsize
- The buffer size to useIllegalArgumentException
- when size is smaller then 1public synchronized int available()
The number of available bytes will be the number of read ahead bytes stored in the internal buffer plus the number of available bytes in the underlying stream.
IOException
- If an error occurspublic void close()
buf
to null
.
IOException
- If an error occurs.public synchronized void mark(int readlimit)
reset()
method. The parameter
readlimit
is the number of bytes that can be read from the
stream after setting the mark before the mark becomes invalid. For
example, if mark()
is called with a read limit of 10, then
when 11 bytes of data are read from the stream before the
reset()
method is called, then the mark is invalid and the
stream object instance is not required to remember the mark.
Note that the number of bytes that can be remembered by this method can be greater than the size of the internal read buffer. It is also not dependent on the subordinate stream supporting mark/reset functionality.
readlimit
- The number of bytes that can be read before the mark
becomes invalidpublic boolean markSupported()
true
to indicate that this class
supports mark/reset functionality.
true
to indicate that mark/reset functionality is
supportedpublic synchronized int read()
This method will block until the byte can be read.
IOException
- If an error occurspublic synchronized int read(byte[] b, int off, int len)
off
into the buffer and attempts to read len
bytes. This method
can return before reading the number of bytes requested. The actual
number of bytes read is returned as an int. A -1 is returned to indicate
the end of the stream.
This method will block until some data can be read.
b
- The array into which the bytes read should be storedoff
- The offset into the array to start storing byteslen
- The requested number of bytes to readIOException
- If an error occurs.IndexOutOfBoundsException
- when off
or
len
are negative, or when off + len
is larger then the size of b
,public synchronized void reset()
mark()
method was called. Any bytes that were read after the mark point was
set will be re-read during subsequent reads.
This method will throw an IOException if the number of bytes read from
the stream since the call to mark()
exceeds the mark limit
passed when establishing the mark.
IOException
- If mark()
was never called or more
then markLimit
bytes were read since the last
call to mark()
public synchronized long skip(long n)
n
- The requested number of bytes to skipIOException
- If an error occurs
FilterInputStream
buffers input from an underlying implementation to provide a possibly more efficient read mechanism. It maintains the buffer and buffer state in instance variables that are available to subclasses. The default buffer size of 2048 bytes can be overridden by the creator of the stream.This class also implements mark/reset functionality. It is capable of remembering any number of input bytes, to the limits of system memory or the size of
Integer.MAX_VALUE
Please note that this class does not properly handle character encodings. Consider using the
BufferedReader
class which does.