java.io
Class Reader

java.lang.Object
  extended by java.io.Reader
Direct Known Subclasses:
InputStreamReader

public abstract class Reader
extends Object

Reader is an Abstract class for reading Character Streams. Subclasses of Reader must implement the methods read(char[], int, int) and close().

See Also:
Writer

Field Summary
protected  Object lock
          The object used to synchronize access to the reader.
 
Constructor Summary
protected Reader()
          Constructs a new character stream Reader using this as the Object to synchronize critical regions around.
protected Reader(Object lock)
          Constructs a new character stream Reader using lock as the Object to synchronize critical regions around.
 
Method Summary
abstract  void close()
          Close this Reader.
 void mark(int readLimit)
          Set a Mark position in this Reader.
 boolean markSupported()
          Answers a boolean indicating whether or not this Reader supports mark() and reset().
 int read()
          Reads a single character from this reader and returns the result as an int.
 int read(char[] buf)
          Reads characters from this Reader and stores them in the character array buf starting at offset 0.
abstract  int read(char[] buf, int offset, int count)
          Reads at most count characters from this Reader and stores them at offset in the character array buf.
 boolean ready()
          Answers a boolean indicating whether or not this Reader is ready to be read without blocking.
 void reset()
          Reset this Readers position to the last mark() location.
 long skip(long count)
          Skips count number of characters in this Reader.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, println, toString
 

Field Detail

lock

protected Object lock
The object used to synchronize access to the reader.

Constructor Detail

Reader

protected Reader()
Constructs a new character stream Reader using this as the Object to synchronize critical regions around.


Reader

protected Reader(Object lock)
Constructs a new character stream Reader using lock as the Object to synchronize critical regions around.

Parameters:
lock - the Object to synchronize critical regions around.
Method Detail

close

public abstract void close()
                    throws IOException
Close this Reader. This must be implemented by any concrete subclasses. The implementation should free any resources associated with the Reader.

Throws:
IOException - If an error occurs attempting to close this Reader.

mark

public void mark(int readLimit)
          throws IOException
Set a Mark position in this Reader. The parameter readLimit indicates how many characters can be read before a mark is invalidated. Sending reset() will reposition the reader back to the marked position provided readLimit has not been surpassed.

This default implementation simply throws IOException and concrete subclasses must provide their own implementations.

Parameters:
readLimit - an int representing how many characters must be read before invalidating the mark.
Throws:
IOException - If an error occurs attempting mark this Reader.

markSupported

public boolean markSupported()
Answers a boolean indicating whether or not this Reader supports mark() and reset(). This class a default implementation which answers false.

Returns:
true if mark() and reset() are supported, false otherwise. This implementation returns false.

read

public int read()
         throws IOException
Reads a single character from this reader and returns the result as an int. The 2 higher-order characters are set to 0. If the end of reader was encountered then return -1.

Returns:
the character read or -1 if end of reader.
Throws:
IOException - If the Reader is already closed or some other IO error occurs.

read

public int read(char[] buf)
         throws IOException
Reads characters from this Reader and stores them in the character array buf starting at offset 0. Returns the number of characters actually read or -1 if the end of reader was encountered.

Parameters:
buf - character array to store the read characters
Returns:
how many characters were successfully read in or else -1 if the end of the reader was detected.
Throws:
IOException - If the Reader is already closed or some other IO error occurs.

read

public abstract int read(char[] buf,
                         int offset,
                         int count)
                  throws IOException
Reads at most count characters from this Reader and stores them at offset in the character array buf. Returns the number of characters actually read or -1 if the end of reader was encountered.

Parameters:
buf - character array to store the read characters
offset - offset in buf to store the read characters
count - how many characters should be read in
Returns:
how many characters were successfully read in or else -1 if the end of the reader was detected.
Throws:
IOException - If the Reader is already closed or some other IO error occurs.

ready

public boolean ready()
              throws IOException
Answers a boolean indicating whether or not this Reader is ready to be read without blocking. If the result is true, the next read() will not block. If the result is false this Reader may or may not block when read() is sent.

Returns:
true if the receiver will not block when read() is called, false if unknown or blocking will occur.
Throws:
IOException - If the Reader is already closed or some other IO error occurs.

reset

public void reset()
           throws IOException
Reset this Readers position to the last mark() location. Invocations of read()/skip() will occur from this new location. If this Reader was not marked, the implementation of reset() is implementation specific. See the comment for the specific Reader subclass for implementation details. The default action is to throw IOException.

Throws:
IOException - If a problem occured or the receiver does not support mark()/reset().

skip

public long skip(long count)
          throws IOException
Skips count number of characters in this Reader. Subsequent read()'s will not return these characters unless reset() is used. This method may perform multiple reads to read count characters.

Parameters:
count - how many characters should be passed over
Returns:
how many characters were successfully passed over
Throws:
IOException - If the Reader is closed when the call is made or if an IO error occurs during the operation.