Package org.apache.lucene.analysis

# Class CharFilter

java.lang.Object
java.io.Reader
org.apache.lucene.analysis.CharFilter

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Readable`

public abstract class CharFilter extends Reader
Subclasses of CharFilter can be chained to filter a Reader They can be used as `Reader` with additional offset correction. `Tokenizer`s will automatically use `correctOffset(int)` if a CharFilter subclass is used.

This class is abstract: at a minimum you must implement `Reader.read(char[], int, int)`, transforming the input in some way from `input`, and `correct(int)` to adjust the offsets to match the originals.

You can optionally provide more efficient implementations of additional methods like `Reader.read()`, `Reader.read(char[])`, `Reader.read(java.nio.CharBuffer)`, but this is not required.

For examples and integration with `Analyzer`, see the `Analysis package documentation`.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final Reader`
  `input`
  The underlying character-input stream.

  ### Fields inherited from class java.io.Reader

  `lock`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CharFilter(Reader input)`
  Create a new CharFilter wrapping the provided reader.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Closes the underlying input stream.
  `protected abstract int`
  `correct(int currentOff)`
  Subclasses override to correct the current offset.
  `final int`
  `correctOffset(int currentOff)`
  Chains the corrected offset through the input CharFilter(s).

  ### Methods inherited from class java.io.Reader

  `mark, markSupported, nullReader, read, read, read, read, ready, reset, skip, transferTo`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### input

    protected final Reader input
    The underlying character-input stream.

- ## Constructor Details

  - ### CharFilter

    public CharFilter(Reader input)
    Create a new CharFilter wrapping the provided reader.
    Parameters:
      `input` - a Reader, can also be a CharFilter for chaining.

- ## Method Details

  - ### close

    public void close() throws IOException
    Closes the underlying input stream.

    NOTE: The default implementation closes the input Reader, so be sure to call `super.close()` when overriding this method.

    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Specified by:
      `close` in class `Reader`
    Throws:
      `IOException`

  - ### correct

    protected abstract int correct(int currentOff)
    Subclasses override to correct the current offset.
    Parameters:
      `currentOff` - current offset
    Returns:
      corrected offset

  - ### correctOffset

    public final int correctOffset(int currentOff)
    Chains the corrected offset through the input CharFilter(s).