Abstract class for reading character streams. The only methods that a subclass must implement are
read(char, int, int) and close(). Most subclasses, however, will override some of the methods
defined here in order to provide higher efficiency, additional functionality, or both.
The object used to synchronize operations on this stream. For efficiency, a character-stream
object may use an object other than itself to protect critical sections. A subclass should
therefore use the object in this field rather than this or a synchronized method.
Creates a new character-stream reader whose critical sections will synchronize on the reader
Closes the stream and releases any system resources associated with it. Once the stream has
been closed, further read(), ready(), mark(), reset(), or skip() invocations will throw an
IOException. Closing a previously closed stream has no effect.
Resets the stream. If the stream has been marked, then attempt to reposition it at the mark.
If the stream has not been marked, then attempt to reset it in some way appropriate to the
particular stream, for example by repositioning it to its starting point. Not all
character-input streams support the reset() operation, and some support reset() without
IOException - If the stream has not been marked, or if the mark has been invalidated, or if the
stream does not support reset(), or if some other I/O error occurs