22.7 The Class java.io.StringBufferInputStream

A StringBufferInputStream contains an internal buffer that contains bytes that may be read from the stream. An internal counter keeps track of the next byte to be supplied by the read method. See also ByteArrayInputStream (§22.6).

public class StringBufferInputStream extends InputStream {
	protected String buffer;
	protected int pos;
	protected int count;
	public StringBufferInputStream(String s)
		throws NullPointerException;
	public int read();
	public int read(byte[] b, int off, int len)
		throws NullPointerException, IndexOutOfBoundsException;
	public long skip(long n);
	public int available();
	public void reset();
}

Note that bytes read from a StringBufferInputStream are the low-order eight bits of each character in the string; the high-order eight bits of each character are ignored.

22.7.1 protected String buffer;

A String that was provided by the creator of the stream. Elements buffer[0] through buffer[count-1] are the only bytes that can ever be read from this stream; element buffer[pos] is the next byte to be read.

22.7.2 protected int pos;

This value should always be nonnegative and not larger than the value of count. The next byte to be read from this stream will be buffer[pos].

22.7.3 protected int count;

This value equals the length of buffer. It is the number of bytes of data in buffer that can ever be read from this stream.

22.7.4 public StringBufferInputStream(String s)
throws NullPointerException

This constructor initializes a newly created StringBufferInputStream so that it uses s as its buffer array. The initial value of pos is 0 and the initial value of count is the length of buffer.

22.7.5 public int read()

If pos equals count, then -1 is returned to indicate end of file. Otherwise, the value buffer[pos]&0xff is returned; just before the return, 1 is added to pos.

Implements the read method of InputStream (§22.3.1).

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

If pos equals count, then -1 is returned to indicate end of file. Otherwise, the number k of bytes read is equal to the smaller of len and count-pos. If k is positive, then bytes buffer[pos] through buffer[pos+k-1] are copied into b[off] through b[off+k-1] in the manner performed by System.arraycopy (§20.18.16). The value k is added into pos and k is returned.

Overrides the read method of InputStream (§22.3.3).

22.7.7 public long skip(long n)

The actual number k of bytes to be skipped is equal to the smaller of n and count-pos. The value k is added into pos and k is returned.

Overrides the skip method of InputStream (§22.3.4).

22.7.8 public int available()

The quantity count-pos is returned.

Overrides the available method of InputStream (§22.3.5).

22.7.9 public void reset()

The value of pos is set to 0.

Overrides the reset method of InputStream (§22.3.8).