1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
// java.io.StringBufferInputStream
// An implementation of the Java Language Specification section 22.7
// Written by Charles Briscoe-Smith; refer to the file LEGAL for details.
package java.io;
public class StringBufferInputStream extends InputStream {
protected String buffer;
protected int pos;
protected int count;
public StringBufferInputStream(String s)
{
buffer=s; pos=0; count=s.length();
}
public int read() throws NullPointerException
{
if (pos==count) return -1;
return buffer.charAt(pos++) & 0xff;
}
public int read(byte[] b, int off, int len)
throws NullPointerException, IndexOutOfBoundsException
{
if (pos==count) return -1;
if (len==0) return 0;
if (off<0 || len<0 || off+len>b.length)
throw new IndexOutOfBoundsException();
int read=count-pos;
if (len<read) read=len;
buffer.getBytes(pos, pos+read, b, off);
pos+=read;
return read;
}
public long skip(long n)
{
int skipped=count-pos;
if (n<skipped) skipped=n;
pos+=skipped;
return skipped;
}
public int available()
{
return count-pos;
}
public void reset()
{
pos=0;
}
}
|