Package org.apache.lucene.store

# Class FilterIndexInput

java.lang.Object
org.apache.lucene.store.DataInput
org.apache.lucene.store.IndexInput
org.apache.lucene.store.FilterIndexInput

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

public class FilterIndexInput extends IndexInput
IndexInput implementation that delegates calls to another directory. This class can be used to add limitations on top of an existing `IndexInput` implementation or to add additional sanity checks for tests. However, if you plan to write your own `IndexInput` implementation, you should consider extending directly `IndexInput` or `DataInput` rather than try to reuse functionality of existing `IndexInput`s by extending this class.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final IndexInput`
  `in`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FilterIndexInput(String resourceDescription, IndexInput in)`
  Creates a FilterIndexInput with a resource description and wrapped delegate IndexInput

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Closes the stream to further operations.
  `IndexInput`
  `getDelegate()`
  Gets the delegate that was passed in on creation
  `long`
  `getFilePointer()`
  Returns the current position in this file, where the next read will occur.
  `long`
  `length()`
  The number of bytes in the file.
  `byte`
  `readByte()`
  Reads and returns a single byte.
  `void`
  `readBytes(byte[] b, int offset, int len)`
  Reads a specified number of bytes into an array at the specified offset.
  `void`
  `seek(long pos)`
  Sets current position in this file, where the next read will occur.
  `IndexInput`
  `slice(String sliceDescription, long offset, long length)`
  Creates a slice of this index input, with the given description, offset, and length.
  `static IndexInput`
  `unwrap(IndexInput in)`
  Unwraps all FilterIndexInputs until the first non-FilterIndexInput IndexInput instance and returns it
  `static IndexInput`
  `unwrapOnlyTest(IndexInput in)`
  Unwraps all test FilterIndexInputs until the first non-test FilterIndexInput IndexInput instance and returns it

  ### Methods inherited from class org.apache.lucene.store.IndexInput

  `clone, getFullSliceDescription, isLoaded, prefetch, randomAccessSlice, skipBytes, slice, toString, updateIOContext`

  ### Methods inherited from class org.apache.lucene.store.DataInput

  `readBytes, readFloats, readGroupVInt, readInt, readInts, readLong, readLongs, readMapOfStrings, readSetOfStrings, readShort, readString, readVInt, readVLong, readZInt, readZLong`

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

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

- ## Field Details

  - ### in

    protected final IndexInput in

- ## Constructor Details

  - ### FilterIndexInput

    public FilterIndexInput(String resourceDescription, IndexInput in)
    Creates a FilterIndexInput with a resource description and wrapped delegate IndexInput

- ## Method Details

  - ### unwrap

    public static IndexInput unwrap(IndexInput in)
    Unwraps all FilterIndexInputs until the first non-FilterIndexInput IndexInput instance and returns it

  - ### unwrapOnlyTest

    public static IndexInput unwrapOnlyTest(IndexInput in)
    Unwraps all test FilterIndexInputs until the first non-test FilterIndexInput IndexInput instance and returns it

  - ### getDelegate

    public IndexInput getDelegate()
    Gets the delegate that was passed in on creation

  - ### close

    public void close() throws IOException
    Description copied from class: `IndexInput`
    Closes the stream to further operations.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Specified by:
      `close` in class `IndexInput`
    Throws:
      `IOException`

  - ### getFilePointer

    public long getFilePointer()
    Description copied from class: `IndexInput`
    Returns the current position in this file, where the next read will occur.
    Specified by:
      `getFilePointer` in class `IndexInput`
    See Also:
      - `IndexInput.seek(long)`

  - ### seek

    public void seek(long pos) throws IOException
    Description copied from class: `IndexInput`
    Sets current position in this file, where the next read will occur. If this is beyond the end of the file then this will throw `EOFException` and then the stream is in an undetermined state.
    Specified by:
      `seek` in class `IndexInput`
    Throws:
      `IOException`
    See Also:
      - `IndexInput.getFilePointer()`

  - ### length

    public long length()
    Description copied from class: `IndexInput`
    The number of bytes in the file.
    Specified by:
      `length` in class `IndexInput`

  - ### slice

    public IndexInput slice(String sliceDescription, long offset, long length) throws IOException
    Description copied from class: `IndexInput`
    Creates a slice of this index input, with the given description, offset, and length. The slice is sought to the beginning.
    Specified by:
      `slice` in class `IndexInput`
    Throws:
      `IOException`

  - ### readByte

    public byte readByte() throws IOException
    Description copied from class: `DataInput`
    Reads and returns a single byte.
    Specified by:
      `readByte` in class `DataInput`
    Throws:
      `IOException`
    See Also:
      - `DataOutput.writeByte(byte)`

  - ### readBytes

    public void readBytes(byte[] b, int offset, int len) throws IOException
    Description copied from class: `DataInput`
    Reads a specified number of bytes into an array at the specified offset.
    Specified by:
      `readBytes` in class `DataInput`
    Parameters:
      `b` - the array to read bytes into
      `offset` - the offset in the array to start storing bytes
      `len` - the number of bytes to read
    Throws:
      `IOException`
    See Also:
      - `DataOutput.writeBytes(byte[],int)`