org.apache.lucene.store

## Class IndexInput

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

- All Implemented Interfaces:
    Closeable, AutoCloseable, Cloneable
  Direct Known Subclasses:
    BufferedIndexInput, ChecksumIndexInput, RAMInputStream

      public abstract class IndexInput
      extends DataInput
      implements Cloneable, Closeable

  Abstract base class for input from a file in a `Directory`. A random-access input stream. Used for all Lucene index input operations.

  `IndexInput` may only be used from one thread, because it is not thread safe (it keeps internal state like file position). To allow multithreaded use, every `IndexInput` instance must be cloned before used in another thread. Subclasses must therefore implement `clone()`, returning a new `IndexInput` which operates on the same underlying resource, but positioned independently. Lucene never closes cloned `IndexInput`s, it will only do this on the original one. The original instance must take care that cloned instances throw `AlreadyClosedException` when the original one is closed.

  See Also:
    `Directory`

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `IndexInput(String resourceDescription)` resourceDescription should be a non-null, opaque string describing this resource; it's returned from `toString()`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `IndexInput` | `clone()` Returns a clone of this stream.
    `abstract void` | `close()` Closes the stream to further operations.
    `abstract long` | `getFilePointer()` Returns the current position in this file, where the next read will occur.
    `abstract long` | `length()` The number of bytes in the file.
    `abstract void` | `seek(long pos)` Sets current position in this file, where the next read will occur.
    `String` | `toString()`

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

      `readByte, readBytes, readBytes, readInt, readLong, readShort, readString, readStringSet, readStringStringMap, readVInt, readVLong`

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

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

- - ### Constructor Detail

    - #### IndexInput

          protected IndexInput(String resourceDescription)

      resourceDescription should be a non-null, opaque string describing this resource; it's returned from `toString()`.

  - ### Method Detail

    - #### close

          public abstract void close()
                              throws IOException

      Closes the stream to further operations.
      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Throws:
        `IOException`

    - #### getFilePointer

          public abstract long getFilePointer()

      Returns the current position in this file, where the next read will occur.
      See Also:
        `seek(long)`

    - #### seek

          public abstract void seek(long pos)
                             throws IOException

      Sets current position in this file, where the next read will occur.
      Throws:
        `IOException`
      See Also:
        `getFilePointer()`

    - #### length

          public abstract long length()

      The number of bytes in the file.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### clone

          public IndexInput clone()

      Returns a clone of this stream.

      Clones of a stream access the same data, and are positioned at the same point as the stream they were cloned from.

      Expert: Subclasses must ensure that clones may be positioned at different points in the input from each other and from the stream they were cloned from.

      Warning: Lucene never closes cloned `IndexInput`s, it will only do this on the original one. The original instance must take care that cloned instances throw `AlreadyClosedException` when the original one is closed.

      Overrides:
        `clone` in class `DataInput`

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.