Methods Summary |
---|
public void | close()Close the stream.
str = null;
|
private void | ensureOpen()Check to make sure that the stream has not been closed
if (str == null)
throw new IOException("Stream closed");
|
public void | mark(int readAheadLimit)Mark the present position in the stream. Subsequent calls to reset()
will reposition the stream to this point.
if (readAheadLimit < 0){
throw new IllegalArgumentException("Read-ahead limit < 0");
}
synchronized (lock) {
ensureOpen();
mark = next;
}
|
public boolean | markSupported()Tell whether this stream supports the mark() operation, which it does.
return true;
|
public int | read()Read a single character.
synchronized (lock) {
ensureOpen();
if (next >= length)
return -1;
return str.charAt(next++);
}
|
public int | read(char[] cbuf, int off, int len)Read characters into a portion of an array.
synchronized (lock) {
ensureOpen();
if ((off < 0) || (off > cbuf.length) || (len < 0) ||
((off + len) > cbuf.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return 0;
}
if (next >= length)
return -1;
int n = Math.min(length - next, len);
str.getChars(next, next + n, cbuf, off);
next += n;
return n;
}
|
public boolean | ready()Tell whether this stream is ready to be read.
synchronized (lock) {
ensureOpen();
return true;
}
|
public void | reset()Reset the stream to the most recent mark, or to the beginning of the
string if it has never been marked.
synchronized (lock) {
ensureOpen();
next = mark;
}
|
public long | skip(long ns)Skips the specified number of characters in the stream. Returns
the number of characters that were skipped.
The ns parameter may be negative, even though the
skip method of the {@link Reader} superclass throws
an exception in this case. Negative values of ns cause the
stream to skip backwards. Negative return values indicate a skip
backwards. It is not possible to skip backwards past the beginning of
the string.
If the entire string has been read or skipped, then this method has
no effect and always returns 0.
synchronized (lock) {
ensureOpen();
if (next >= length)
return 0;
// Bound skip by beginning and end of the source
long n = Math.min(length - next, ns);
n = Math.max(-next, n);
next += n;
return n;
}
|