public abstract class FilterReader extends Reader
Reader
and performs some transformation on the
input data while it is being read. Transformations can be anything from a
simple byte-wise filtering input data to an on-the-fly compression or
decompression of the underlying reader. Readers that wrap another reader and
provide some additional functionality on top of it usually inherit from this
class.FilterWriter
Modifier and Type | Field and Description |
---|---|
protected Reader |
in
The target Reader which is being filtered.
|
Modifier | Constructor and Description |
---|---|
protected |
FilterReader(Reader in)
Constructs a new FilterReader on the Reader
in . |
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes this reader.
|
void |
mark(int readlimit)
Sets a mark position in this reader.
|
boolean |
markSupported()
Indicates whether this reader supports
mark() and reset() . |
int |
read()
Reads a single character from the filtered reader and returns it as an
integer with the two higher-order bytes set to 0.
|
int |
read(char[] buffer,
int offset,
int count)
Reads at most
count characters from the filtered reader and stores them
in the byte array buffer starting at offset . |
boolean |
ready()
Indicates whether this reader is ready to be read without blocking.
|
void |
reset()
Resets this reader's position to the last marked location.
|
long |
skip(long charCount)
Skips
charCount characters in this reader. |
protected Reader in
protected FilterReader(Reader in)
in
.in
- The non-null Reader to filter reads on.public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
close
in class Reader
IOException
- if an error occurs while closing this reader.public void mark(int readlimit) throws IOException
readlimit
indicates how many bytes can be read before the mark is invalidated.
Sending reset()
will reposition this reader back to the marked
position, provided that readlimit
has not been surpassed.
This implementation sets a mark in the filtered reader.
mark
in class Reader
readlimit
- the number of bytes that can be read from this reader before
the mark is invalidated.IOException
- if an error occurs while marking this reader.markSupported()
,
reset()
public boolean markSupported()
mark()
and reset()
.
This implementation returns whether the filtered reader supports marking.markSupported
in class Reader
true
if mark()
and reset()
are supported
by the filtered reader, false
otherwise.mark(int)
,
reset()
,
skip(long)
public int read() throws IOException
read
in class Reader
IOException
- if an error occurs while reading from this reader.public int read(char[] buffer, int offset, int count) throws IOException
count
characters from the filtered reader and stores them
in the byte array buffer
starting at offset
. Returns the
number of characters actually read or -1 if no characters were read and
the end of the filtered reader was encountered.read
in class Reader
buffer
- the char array in which to store the characters read.offset
- the initial position in buffer
to store the characters
read from this reader.count
- the maximum number of characters to store in buffer
.IOException
- if an error occurs while reading from this reader.public boolean ready() throws IOException
true
, the next read()
will not block. If
the result is false
, this reader may or may not block when
read()
is sent.ready
in class Reader
true
if this reader will not block when read()
is called, false
if unknown or blocking will occur.IOException
- if the reader is closed or some other I/O error occurs.Reader.read()
,
Reader.read(char[])
,
Reader.read(char[], int, int)
public void reset() throws IOException
read()
and skip()
will occur from this new location. If
this reader was not marked, the behavior depends on the implementation of
reset()
in the Reader subclass that is filtered by this reader.
The default behavior for Reader is to throw an IOException
.reset
in class Reader
IOException
- if a problem occurred or the filtered reader does not support
mark()
and reset()
.mark(int)
,
markSupported()
public long skip(long charCount) throws IOException
charCount
characters in this reader. Subsequent calls to read
will not return these characters unless reset
is used. The
default implementation is to skip characters in the filtered reader.skip
in class Reader
IOException
- if the filtered reader is closed or some other I/O error
occurs.mark(int)
,
markSupported()
,
reset()