org.apache.lucene.store

## Class FSDirectory.FSIndexInput

- java.lang.Object
- - org.apache.lucene.store.DataInput
  - - org.apache.lucene.store.IndexInput
    - - org.apache.lucene.store.BufferedIndexInput
      - - org.apache.lucene.store.FSDirectory.FSIndexInput

All Implemented Interfaces:
  Closeable, AutoCloseable, Cloneable

Direct Known Subclasses:
  NIOFSDirectory.NIOFSIndexInput, SimpleFSDirectory.SimpleFSIndexInput

Enclosing class:
  FSDirectory

    protected abstract static class FSDirectory.FSIndexInput
    extends BufferedIndexInput

Base class for reading input from a RandomAccessFile

### Field Summary

Fields
`protected int` `chunkSize` maximum read length on a 32bit JVM to prevent incorrect OOM, see LUCENE-1566
`protected long` `end` end offset (start+length)
`protected RandomAccessFile` `file` the underlying RandomAccessFile
`protected long` `off` start offset: non-zero in the slice case

### Fields inherited from class org.apache.lucene.store.BufferedIndexInput

`buffer, BUFFER_SIZE, MERGE_BUFFER_SIZE`

### Constructor Summary

Constructors
`protected` `FSDirectory.FSIndexInput(String resourceDesc, File path, IOContext context, int chunkSize)` Create a new FSIndexInput, reading the entire file from `path`
`protected` `FSDirectory.FSIndexInput(String resourceDesc, RandomAccessFile file, long off, long length, int bufferSize, int chunkSize)` Create a new FSIndexInput, representing a slice of an existing open `file`

### Method Summary

Methods
`FSDirectory.FSIndexInput` `clone()` Returns a clone of this stream.
`void` `close()` Closes the stream to further operations.
`long` `length()` The number of bytes in the file.

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

`bufferSize, flushBuffer, getBufferSize, getFilePointer, newBuffer, readByte, readBytes, readBytes, readInt, readInternal, readLong, readShort, readVInt, readVLong, seek, seekInternal, setBufferSize`

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

`toString`

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

`readString, readStringSet, readStringStringMap`

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

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

### Field Detail

#### file

    protected final RandomAccessFile file

the underlying RandomAccessFile

#### chunkSize

    protected final int chunkSize

maximum read length on a 32bit JVM to prevent incorrect OOM, see LUCENE-1566

#### off

    protected final long off

start offset: non-zero in the slice case

#### end

    protected final long end

end offset (start+length)

### Constructor Detail

#### FSDirectory.FSIndexInput

    protected FSDirectory.FSIndexInput(String resourceDesc,
                            File path,
                            IOContext context,
                            int chunkSize)
                                throws IOException

Create a new FSIndexInput, reading the entire file from `path`

Throws:
  `IOException`

#### FSDirectory.FSIndexInput

    protected FSDirectory.FSIndexInput(String resourceDesc,
                            RandomAccessFile file,
                            long off,
                            long length,
                            int bufferSize,
                            int chunkSize)

Create a new FSIndexInput, representing a slice of an existing open `file`

### Method Detail

#### close

    public void close()
               throws IOException

Description copied from class: `IndexInput`
Closes the stream to further operations.

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

#### clone

    public FSDirectory.FSIndexInput clone()

Description copied from class: `IndexInput`
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 `BufferedIndexInput`

#### length

    public final long length()

Description copied from class: `IndexInput`
The number of bytes in the file.

Specified by:
  `length` in class `IndexInput`