FileDocCategorySizeDatePackage
StringBufferInputStream.javaAPI DocJava SE 5 API4675Fri Aug 26 14:57:00 BST 2005java.io

StringBufferInputStream

public class StringBufferInputStream extends InputStream
This class allows an application to create an input stream in which the bytes read are supplied by the contents of a string. Applications can also read bytes from a byte array by using a ByteArrayInputStream.

Only the low eight bits of each character in the string are used by this class.

author
Arthur van Hoff
version
1.26, 05/18/04
see
java.io.ByteArrayInputStream
see
java.io.StringReader
since
JDK1.0
deprecated
This class does not properly convert characters into bytes. As of JDK 1.1, the preferred way to create a stream from a string is via the StringReader class.

Fields Summary
protected String
buffer
The string from which bytes are read.
protected int
pos
The index of the next character to read from the input stream buffer.
protected int
count
The number of valid characters in the input stream buffer.
Constructors Summary
public StringBufferInputStream(String s)
Creates a string input stream to read data from the specified string.

param
s the underlying input buffer.

	this.buffer = s;
	count = s.length();
    
Methods Summary
public synchronized intavailable()
Returns the number of bytes that can be read from the input stream without blocking.

return
the value of count - pos, which is the number of bytes remaining to be read from the input buffer.

	return count - pos;
    
public synchronized intread()
Reads the next byte of data from this 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.

The read method of StringBufferInputStream cannot block. It returns the low eight bits of the next character in this input stream's buffer.

return
the next byte of data, or -1 if the end of the stream is reached.

	return (pos < count) ? (buffer.charAt(pos++) & 0xFF) : -1;
    
public synchronized intread(byte[] b, int off, int len)
Reads up to len bytes of data from this input stream into an array of bytes.

The read method of StringBufferInputStream cannot block. It copies the low eight bits from the characters in this input stream's buffer into the byte array argument.

param
b the buffer into which the data is read.
param
off the start offset of the data.
param
len the maximum number of bytes read.
return
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

	if (b == null) {
	    throw new NullPointerException();
	} else if ((off < 0) || (off > b.length) || (len < 0) ||
		   ((off + len) > b.length) || ((off + len) < 0)) {
	    throw new IndexOutOfBoundsException();
	}
	if (pos >= count) {
	    return -1;
	}
	if (pos + len > count) {
	    len = count - pos;
	}
	if (len <= 0) {
	    return 0;
	}
	String	s = buffer;
	int cnt = len;
	while (--cnt >= 0) {
	    b[off++] = (byte)s.charAt(pos++);
	}

	return len;
    
public synchronized voidreset()
Resets the input stream to begin reading from the first character of this input stream's underlying buffer.

	pos = 0;
    
public synchronized longskip(long n)
Skips n bytes of input from this input stream. Fewer bytes might be skipped if the end of the input stream is reached.

param
n the number of bytes to be skipped.
return
the actual number of bytes skipped.

	if (n < 0) {
	    return 0;
	}
	if (n > count - pos) {
	    n = count - pos;
	}
	pos += n;
	return n;