22.10 The Class java.io.BufferedInputStream

A BufferedInputStream adds functionality to another input stream-namely, the ability to buffer the input and to support the mark and reset methods. When the BufferedInputStream is created, an internal buffer array is created. As bytes from the stream are read or skipped, the internal buffer is refilled as necessary from the contained input stream, many bytes at a time. The mark operation remembers a point in the input stream and the reset operation causes all the bytes read since the most recent mark operation to be reread before new bytes are taken from the contained input stream.

public class BufferedInputStream extends FilterInputStream {
	protected byte[] buf;
	protected int count = 0;
	protected int pos = 0;
	protected int markpos = -1;
	protected int marklimit = 0;
	public BufferedInputStream(InputStream in);
	public BufferedInputStream(InputStream in, int size);
	public int read() throws IOException;
	public int read(byte[] b)
		throws IOException, NullPointerException;
	public int read(byte[] b, int off, int len)
		throws IOException, NullPointerException,
			IndexOutOfBoundsException;
	public long skip(long n) throws IOException;
	public int available() throws IOException;
	public void mark(int readlimit);
	public void reset() throws IOException;
	public boolean markSupported();
}

22.10.1 protected byte[] buf;

The internal buffer array. When necessary, it may be replaced by another array of a different size.

22.10.2 protected int count = 0;

This value is always in the range 0 through buf.length; elements buf[0] through buf[count-1] contain buffered input data obtained from the underlying input stream.

22.10.3 protected int pos = 0;

This value is always in the range 0 through count. If it is less than count, then buf[pos] is the next byte to be supplied as input; if it is equal to count, then the next read or skip operation will require more bytes to be read from the contained input stream.

22.10.4 protected int markpos = -1;

This value is always in the range -1 through pos. If there is no marked position in the input stream, this field is -1. If there is a marked position in the input stream, then buf[markpos] is the first byte to be supplied as input after a reset operation. If markpos is not -1, then all bytes from positions buf[markpos] through buf[pos-1] must remain in the buffer array (though they may be moved to another place in the buffer array, with suitable adjustments to the values of count, pos, and markpos); they may not be discarded unless and until the difference between pos and markpos exceeds marklimit.

22.10.5 protected int marklimit;

Whenever the difference between pos and markpos exceeds marklimit, then the mark may be dropped by setting markpos to -1.

22.10.6 public BufferedInputStream(InputStream in)

This constructor initializes a newly created BufferedInputStream by saving its argument, the input stream in, for later use. An internal buffer array is created and stored in buf.

22.10.7 public BufferedInputStream(InputStream in, int size)

This constructor initializes a newly created BufferedInputStream by saving its argument, the input stream in, for later use. An internal buffer array of length size is created and stored in buf.

22.10.8 public int read() throws IOException

See the general contract of the read method of InputStream (§22.3.1).

Overrides the read method of FilterInputStream (§22.9.3).

22.10.9 public int read(byte[] b)
throws IOException, NullPointerException

See the general contract of the read method of InputStream (§22.3.2).

Overrides the read method of FilterInputStream (§22.9.4).

22.10.10 public int read(byte[] b, int off, int len)
throws IOException, NullPointerException, IndexOutOfBoundsException

See the general contract of the read method of InputStream (§22.3.3).

Overrides the read method of FilterInputStream (§22.9.5).

22.10.11 public long skip(long n) throws IOException

See the general contract of the skip method of InputStream (§22.3.4).

Overrides the skip method of FilterInputStream (§22.9.6).

22.10.12 public int available() throws IOException

See the general contract of the available method of InputStream (§22.3.5).

Overrides the available method of FilterInputStream (§22.9.7).

22.10.13 public void mark(int readlimit)

The field marklimit is set equal to the argument and markpos is set equal to pos

Overrides the mark method of FilterInputStream (§22.9.9).

22.10.14 public void reset() throws IOException

See the general contract of the reset method of InputStream (§22.3.8).

If markpos is -1 (no mark has been set or the mark has been invalidated), an IOException is thrown. Otherwise, pos is set equal to markpos.

Overrides the reset method of FilterInputStream (§22.9.10).

22.10.15 public boolean markSupported()

This method returns true (a BufferedInputStream always supports mark).

Overrides the markSupported method of FilterInputStream (§22.9.11).