public abstract class

Reader

extends Object
implements Closeable Readable
java.lang.Object
   ↳ java.io.Reader
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

The base class for all readers. A reader is a means of reading data from a source in a character-wise manner. Some readers also support marking a position in the input and returning to this position later.

This abstract class does not provide a fully working implementation, so it needs to be subclassed, and at least the read(char[], int, int) and close() methods needs to be overridden. Overriding some of the non-abstract methods is also often advised, since it might result in higher efficiency.

Many specialized readers for purposes like reading from a file already exist in this package.

See Also

Summary

Fields
protected Object lock The object used to synchronize access to the reader.
Protected Constructors
Reader()
Constructs a new Reader with this as the object used to synchronize critical sections.
Reader(Object lock)
Constructs a new Reader with lock used to synchronize critical sections.
Public Methods
abstract void close()
Closes this reader.
void mark(int readLimit)
Sets a mark position in this reader.
boolean markSupported()
Indicates whether this reader supports the mark() and reset() methods.
int read()
Reads a single character from this reader and returns it as an integer with the two higher-order bytes set to 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.
int read(CharBuffer target)
Reads characters and puts them into the target character buffer.
int read(char[] buf)
Reads characters from this reader and stores them in the character array buf starting at offset 0.
boolean ready()
Indicates whether this reader is ready to be read without blocking.
void reset()
Resets this reader's position to the last mark() location.
long skip(long count)
Skips amount characters in this reader.
[Expand]
Inherited Methods
From class java.lang.Object
From interface java.io.Closeable
From interface java.lang.Readable

Fields

protected Object lock

Since: API Level 1

The object used to synchronize access to the reader.

Protected Constructors

protected Reader ()

Since: API Level 1

Constructs a new Reader with this as the object used to synchronize critical sections.

protected Reader (Object lock)

Since: API Level 1

Constructs a new Reader with lock used to synchronize critical sections.

Parameters
lock the Object used to synchronize critical sections.
Throws
NullPointerException if lock is null.

Public Methods

public abstract void close ()

Since: API Level 1

Closes this reader. Implementations of this method should free any resources associated with the reader.

Throws
IOException if an error occurs while closing this reader.

public void mark (int readLimit)

Since: API Level 1

Sets a mark position in this reader. The parameter readLimit indicates how many characters can be read before the mark is invalidated. Calling reset() will reposition the reader back to the marked position if readLimit has not been surpassed.

This default implementation simply throws an IOException; subclasses must provide their own implementation.

Parameters
readLimit the number of characters that can be read before the mark is invalidated.
Throws
IllegalArgumentException if readLimit < 0.
IOException if an error occurs while setting a mark in this reader.

public boolean markSupported ()

Since: API Level 1

Indicates whether this reader supports the mark() and reset() methods. This default implementation returns false.

Returns
  • always false.

public int read ()

Since: API Level 1

Reads a single character from this reader and returns it as an integer with the two higher-order bytes set to 0. Returns -1 if the end of the reader has been reached.

Returns
  • the character read or -1 if the end of the reader has been reached.
Throws
IOException if this reader is closed or some other I/O error occurs.

public abstract int read (char[] buf, int offset, int count)

Since: API Level 1

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 the reader has been reached.

Parameters
buf the character array 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 read.
Returns
  • the number of characters read or -1 if the end of the reader has been reached.
Throws
IOException if this reader is closed or some other I/O error occurs.

public int read (CharBuffer target)

Since: API Level 1

Reads characters and puts them into the target character buffer.

Parameters
target the destination character buffer.
Returns
  • the number of characters put into target or -1 if the end of this reader has been reached before a character has been read.
Throws
IOException if any I/O error occurs while reading from this reader.
NullPointerException if target is null.
ReadOnlyBufferException if target is read-only.

public int read (char[] buf)

Since: API Level 1

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 the reader has been reached.

Parameters
buf character array to store the characters read.
Returns
  • the number of characters read or -1 if the end of the reader has been reached.
Throws
IOException if this reader is closed or some other I/O error occurs.

public boolean ready ()

Since: API Level 1

Indicates whether this reader is ready to be read without blocking. Returns true if this reader will not block when read is called, false if unknown or blocking will occur. This default implementation always returns false.

Returns
  • always false.
Throws
IOException if this reader is closed or some other I/O error occurs.

public void reset ()

Since: API Level 1

Resets this reader's position to the last mark() location. Invocations of read() and skip() will occur from this new location. If this reader has not been marked, the behavior of reset() is implementation specific. This default implementation throws an IOException.

Throws
IOException always thrown in this default implementation.

public long skip (long count)

Since: API Level 1

Skips amount characters in this reader. Subsequent calls of read methods will not return these characters unless reset() is used. This method may perform multiple reads to read count characters.

Parameters
count the maximum number of characters to skip.
Returns
  • the number of characters actually skipped.
Throws
IllegalArgumentException if amount < 0.
IOException if this reader is closed or some other I/O error occurs.