Class java.io.BufferedInputStream
java.lang.Object
|
+----java.io.InputStream
|
+----java.io.FilterInputStream
|
+----java.io.BufferedInputStream
- public class BufferedInputStream
- extends FilterInputStream
The class implements a buffered input stream. By setting up such
an input stream, an application can read bytes from a stream
without necessarily causing a call to the underlying system for
each byte read. The data is read by blocks into a buffer;
subsequent reads can access the data directly from the buffer.
- Since:
- JDK1.0
Field Summary
|
byte[]
|
buf
The buffer where data is stored.
|
int
|
count
The index one greater than the index of the last valid byte in
the buffer.
|
int
|
marklimit
The maximum read ahead allowed after a call to the
mark method before subsequent calls to the
reset method fail.
|
int
|
markpos
The value of the pos field at the time the last
mark method was called.
|
int
|
pos
The current position in the buffer.
|
Constructor Summary
|
BufferedInputStream(InputStream in)
Creates a new buffered input stream to read data from the
specified input stream with the default buffer size.
|
BufferedInputStream(InputStream in,
int size)
Creates a new buffered input stream to read data from the
specified input stream with the specified buffer size.
|
Method Summary
|
int
|
available()
Returns the number of bytes that can be read from this input
stream without blocking.
|
void
|
close()
Closes this input stream and releases any system resources
associated with the stream.
|
void
|
mark(int readlimit)
Marks the current position in this input stream.
|
boolean
|
markSupported()
Tests if this input stream supports the mark
and reset methods.
|
int
|
read()
Reads the next byte of data from this buffered input stream.
|
int
|
read(byte[] b,
int off,
int len)
Reads bytes into a portion of an array.
|
void
|
reset()
Repositions this stream to the position at the time the
mark method was last called on this input stream.
|
long
|
skip(long n)
Skips over and discards n bytes of data from the
input stream.
|
Methods inherited from class java.lang.Object
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
buf
protected byte[] buf
- The buffer where data is stored.
count
protected int count
- The index one greater than the index of the last valid byte in
the buffer.
pos
protected int pos
- The current position in the buffer. This is the index of the next
character to be read from the
buf
array.
- See Also:
- buf
markpos
protected int markpos
- The value of the
pos
field at the time the last
mark
method was called. The value of this field is
-1
if there is no current mark.
- See Also:
- mark(int), pos
marklimit
protected int marklimit
- The maximum read ahead allowed after a call to the
mark
method before subsequent calls to the
reset
method fail.
- See Also:
- mark(int), reset()
BufferedInputStream
public BufferedInputStream(InputStream in)
- Creates a new buffered input stream to read data from the
specified input stream with the default buffer size.
- Parameters:
in
- the underlying input stream.
BufferedInputStream
public BufferedInputStream(InputStream in,
int size)
- Creates a new buffered input stream to read data from the
specified input stream with the specified buffer size.
- Parameters:
in
- the underlying input stream.
size
- the buffer size.
read
public int read() throws IOException
- Reads the next byte of data from this buffered input stream. The
value byte is returned as an
int
in the range
0
to 255
. If no byte is available
because the end of the stream has been reached, the value
-1
is returned. This method blocks until input data
is available, the end of the stream is detected, or an exception
is thrown.
The read
method of BufferedInputStream
returns the next byte of data from its buffer if the buffer is not
empty. Otherwise, it refills the buffer from the underlying input
stream and returns the next character, if the underlying stream
has not returned an end-of-stream indicator.
- Returns:
- the next byte of data, or
-1
if the end of the
stream is reached. - Throws:
- IOException - if an I/O error occurs.
- Overrides:
- read in class FilterInputStream
- See Also:
- in
read
public int read(byte[] b,
int off,
int len) throws IOException
- Reads bytes into a portion of an array. This method will block until
some input is available, an I/O error occurs, or the end of the stream
is reached.
If this stream's buffer is not empty, bytes are copied from it into
the array argument. Otherwise, the buffer is refilled from the
underlying input stream and, unless the stream returns an end-of-stream
indication, the array argument is filled with characters from the
newly-filled buffer.
As an optimization, if the buffer is empty, the mark is not valid,
and len
is at least as large as the buffer, then this
method will read directly from the underlying stream into the given
array. Thus redundant BufferedInputStream
s will not copy
data unnecessarily.
- Parameters:
b
- destination buffer.
off
- offset at which to start storing bytes.
len
- maximum number of bytes to read.
- Returns:
- the number of bytes read, or
-1
if the end of
the stream has been reached. - Throws:
- IOException - if an I/O error occurs.
- Overrides:
- read in class FilterInputStream
skip
public long skip(long n) throws IOException
- Skips over and discards
n
bytes of data from the
input stream. The skip
method may, for a variety of
reasons, end up skipping over some smaller number of bytes,
possibly zero. The actual number of bytes skipped is returned.
If the buffer is not empty, then this method skips up to n
bytes but does not refill the buffer. If the buffer is empty and the
mark is valid, then the buffer is filled once and then treated as in the
previous case. If the buffer is empty and the mark is not valid, then
the skip
method of the underlying input stream is invoked
directly to skip up to n
bytes.
- Parameters:
n
- the number of bytes to be skipped.
- Returns:
- the actual number of bytes skipped.
- Throws:
- IOException - if an I/O error occurs.
- Overrides:
- skip in class FilterInputStream
available
public int available() throws IOException
- Returns the number of bytes that can be read from this input
stream without blocking.
The available
method of
BufferedInputStream
returns the sum of the the number
of bytes remaining to be read in the buffer
(count - pos
)
and the result of calling the available
method of the
underlying input stream.
- Returns:
- the number of bytes that can be read from this input
stream without blocking.
- Throws:
- IOException - if an I/O error occurs.
- Overrides:
- available in class FilterInputStream
- See Also:
- in
mark
public void mark(int readlimit)
- Marks the current position in this input stream. A subsequent
call to the
reset
method repositions the stream at
the last marked position so that subsequent reads re-read the same
bytes.
The readlimit
argument tells the input stream to
allow that many bytes to be read before the mark position gets
invalidated.
- Parameters:
readlimit
- the maximum limit of bytes that can be read before
the mark position becomes invalid.
- Overrides:
- mark in class FilterInputStream
- See Also:
- reset()
reset
public void reset() throws IOException
- Repositions this stream to the position at the time the
mark
method was last called on this input stream.
If the stream has not been marked, or if the mark has been invalidated,
an IOException is thrown. Stream marks are intended to be used in
situations where you need to read ahead a little to see what's in
the stream. Often this is most easily done by invoking some
general parser. If the stream is of the type handled by the
parser, it just chugs along happily. If the stream is not of
that type, the parser should toss an exception when it fails. If an
exception gets tossed within readlimit bytes, the parser will allow the
outer code to reset the stream and to try another parser.
- Throws:
- IOException - if this stream has not been marked or
if the mark has been invalidated.
- Overrides:
- reset in class FilterInputStream
- See Also:
- mark(int)
markSupported
public boolean markSupported()
- Tests if this input stream supports the
mark
and reset
methods. The markSupported
method of BufferedInputStream
returns
true
.
- Returns:
- a
boolean
indicating if this stream type supports
the mark
and reset
methods. - Overrides:
- markSupported in class FilterInputStream
- See Also:
- mark(int), reset()
close
public void close() throws IOException
- Closes this input stream and releases any system resources
associated with the stream.
- Throws:
- IOException - if an I/O error occurs.
- Overrides:
- close in class FilterInputStream
Submit a bug or feature
Submit comments/suggestions about new javadoc look.
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved.