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
`protected` `IndexInput(String resourceDescription)` resourceDescription should be a non-null, opaque string describing this resource; it's returned from `toString()`.

### Method Summary

Methods
`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`