Methods Summary |
---|
public void | close()Closes the stream and releases any system resources associated with
it. Once the stream has been closed, further read(),
ready(), mark(), or reset() invocations will throw an IOException.
Closing a previously closed stream has no effect.
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)Marks 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()Tells whether this stream supports the mark() operation, which it does.
return true;
|
public int | read()Reads a single character.
synchronized (lock) {
ensureOpen();
if (next >= length)
return -1;
return str.charAt(next++);
}
|
public int | read(char[] cbuf, int off, int len)Reads 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()Tells whether this stream is ready to be read.
synchronized (lock) {
ensureOpen();
return true;
}
|
public void | reset()Resets 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;
}
|