Package java.io

Class FilterReader

java.lang.Object
java.io.Reader
java.io.FilterReader
All Implemented Interfaces:
Closeable, AutoCloseable, Readable
Direct Known Subclasses:
PushbackReader

public abstract class FilterReader
extends Reader
Wraps an existing 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.
See Also:
FilterWriter
  • Field Summary

    Fields
    Modifier and Type Field Description
    protected Reader in
    The target Reader which is being filtered.

    Fields inherited from class java.io.Reader

    lock
  • Constructor Summary

    Constructors
    Modifier Constructor Description
    protected FilterReader​(Reader in)
    Constructs a new FilterReader on the Reader in.
  • Method Summary

    Modifier and Type Method 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 up to 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.

    Methods inherited from class java.io.Reader

    read, read

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • in

      protected Reader in
      The target Reader which is being filtered.
  • Constructor Details

    • FilterReader

      protected FilterReader​(Reader in)
      Constructs a new FilterReader on the Reader in.
      Parameters:
      in - The non-null Reader to filter reads on.
  • Method Details

    • close

      public void close() throws IOException
      Closes this reader. This implementation closes the filtered reader.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in class Reader
      Throws:
      IOException - if an error occurs while closing this reader.
    • mark

      public void mark​(int readlimit) throws IOException
      Sets a mark position in this reader. The parameter 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.

      Overrides:
      mark in class Reader
      Parameters:
      readlimit - the number of bytes that can be read from this reader before the mark is invalidated.
      Throws:
      IOException - if an error occurs while marking this reader.
      See Also:
      markSupported(), reset()
    • markSupported

      public boolean markSupported()
      Indicates whether this reader supports mark() and reset(). This implementation returns whether the filtered reader supports marking.
      Overrides:
      markSupported in class Reader
      Returns:
      true if mark() and reset() are supported by the filtered reader, false otherwise.
      See Also:
      mark(int), reset(), skip(long)
    • read

      public int read() throws IOException
      Reads a single character from the filtered reader and returns it as an integer with the two higher-order bytes set to 0. Returns -1 if the end of the filtered reader has been reached.
      Overrides:
      read in class Reader
      Returns:
      The character read or -1 if the end of the filtered reader has been reached.
      Throws:
      IOException - if an error occurs while reading from this reader.
    • read

      public int read​(char[] buffer, int offset, int count) throws IOException
      Reads up to 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.
      Specified by:
      read in class Reader
      Throws:
      IOException - if an error occurs while reading from this reader.
    • ready

      public boolean ready() throws IOException
      Indicates whether 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.
      Overrides:
      ready in class Reader
      Returns:
      true if this reader will not block when read() is called, false if unknown or blocking will occur.
      Throws:
      IOException - if the reader is closed or some other I/O error occurs.
      See Also:
      Reader.read(), Reader.read(char[]), Reader.read(char[], int, int)
    • reset

      public void reset() throws IOException
      Resets this reader's position to the last marked location. Invocations of 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.
      Overrides:
      reset in class Reader
      Throws:
      IOException - if a problem occurred or the filtered reader does not support mark() and reset().
      See Also:
      mark(int), markSupported()
    • skip

      public long skip​(long charCount) throws IOException
      Skips 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.
      Overrides:
      skip in class Reader
      Returns:
      the number of characters actually skipped.
      Throws:
      IOException - if the filtered reader is closed or some other I/O error occurs.
      See Also:
      mark(int), markSupported(), reset()