Contents | Package | Class | Tree | Deprecated | Index | Help Java 1.2 Beta 3
PREV | NEXT SHOW LISTS | HIDE LISTS

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.
 
Fields inherited from class java.io.FilterInputStream
 in
 

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.io.FilterInputStream
 available, close, mark, markSupported, read, read, read, reset, skip
 
Methods inherited from class java.io.InputStream
 available, close, mark, markSupported, read, read, read, reset, skip
 
Methods inherited from class java.lang.Object
 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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()
Constructor Detail

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.
Method Detail

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 BufferedInputStreams 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

Contents | Package | Class | Tree | Deprecated | Index | Help Java 1.2 Beta 3
PREV | NEXT SHOW LISTS | HIDE LISTS

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.