## org.apache.lucene.store
Class NIOFSDirectory

    java.lang.Object
      org.apache.lucene.store.Directory
          org.apache.lucene.store.FSDirectory
              org.apache.lucene.store.NIOFSDirectory

All Implemented Interfaces:
  Closeable

    public class NIOFSDirectory

extends FSDirectory

An `FSDirectory` implementation that uses java.nio's FileChannel's positional read, which allows multiple threads to read from the same file without synchronizing.

This class only uses FileChannel when reading; writing is achieved with `FSDirectory.FSIndexOutput`.

NOTE: NIOFSDirectory is not recommended on Windows because of a bug in how FileChannel.read is implemented in Sun's JRE. Inside of the implementation the position is apparently synchronized. See here for details.

NOTE: Accessing this class either directly or indirectly from a thread while it's interrupted can close the underlying file descriptor immediately if at the same time the thread is blocked on IO. The file descriptor will remain closed and subsequent access to `NIOFSDirectory` will throw a `ClosedChannelException`. If your application uses either `Thread.interrupt()` or `Future.cancel(boolean)` you should use `SimpleFSDirectory` in favor of `NIOFSDirectory`.

Nested Class Summary
`protected static class` `NIOFSDirectory.NIOFSIndexInput` Reads bytes with `FileChannel.read(ByteBuffer, long)`

Nested classes/interfaces inherited from class org.apache.lucene.store.FSDirectory
`FSDirectory.FSIndexInput, FSDirectory.FSIndexOutput`

Nested classes/interfaces inherited from class org.apache.lucene.store.Directory
`Directory.IndexInputSlicer`

Field Summary

Fields inherited from class org.apache.lucene.store.FSDirectory
`DEFAULT_READ_CHUNK_SIZE, directory, staleFiles`

Fields inherited from class org.apache.lucene.store.Directory
`isOpen, lockFactory`

Constructor Summary
`NIOFSDirectory(File path)` Create a new NIOFSDirectory for the named location and `NativeFSLockFactory`.
`NIOFSDirectory(File path, LockFactory lockFactory)` Create a new NIOFSDirectory for the named location.

Method Summary
`Directory.IndexInputSlicer` `createSlicer(String name, IOContext context)` Creates an `Directory.IndexInputSlicer` for the given file name.
`IndexInput` `openInput(String name, IOContext context)` Creates an IndexInput for the file with the given name.

Methods inherited from class org.apache.lucene.store.FSDirectory
`close, createOutput, deleteFile, ensureCanWrite, fileExists, fileLength, fileModified, fsync, getDirectory, getLockID, getReadChunkSize, listAll, listAll, onIndexOutputClosed, open, open, setLockFactory, setReadChunkSize, sync, toString`

Methods inherited from class org.apache.lucene.store.Directory
`clearLock, copy, ensureOpen, getLockFactory, makeLock`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### NIOFSDirectory

    public NIOFSDirectory(File path,
                          LockFactory lockFactory)
                   throws IOException

  Create a new NIOFSDirectory for the named location.

  Parameters:
    `path` - the path of the directory
    `lockFactory` - the lock factory to use, or null for the default (`NativeFSLockFactory`);
  Throws:
    `IOException` - if there is a low-level I/O error

### NIOFSDirectory

    public NIOFSDirectory(File path)
                   throws IOException

  Create a new NIOFSDirectory for the named location and `NativeFSLockFactory`.

  Parameters:
    `path` - the path of the directory
  Throws:
    `IOException` - if there is a low-level I/O error

Method Detail

### openInput

    public IndexInput openInput(String name,
                                IOContext context)
                         throws IOException

  Creates an IndexInput for the file with the given name.

  Specified by:
    `openInput` in class `Directory`
  Throws:
    `IOException`

### createSlicer

    public Directory.IndexInputSlicer createSlicer(String name,
                                                   IOContext context)
                                            throws IOException

  Description copied from class: `Directory`
  Creates an `Directory.IndexInputSlicer` for the given file name. IndexInputSlicer allows other `Directory` implementations to efficiently open one or more sliced `IndexInput` instances from a single file handle. The underlying file handle is kept open until the `Directory.IndexInputSlicer` is closed.
  - Must throw `FileNotFoundException` if the file does not exist (not `java.nio.file.NoSuchFileException` of Java 7).

  Overrides:
    `createSlicer` in class `Directory`
  Throws:
    `IOException` - if an `IOException` occurs

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