org.apache.lucene.store
Class NIOFSDirectory

java.lang.Object
  extended by org.apache.lucene.store.Directory
      extended by org.apache.lucene.store.BaseDirectory
          extended by org.apache.lucene.store.FSDirectory
              extended by 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.BaseDirectory
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, fsync, getDirectory, getLockID, getReadChunkSize, listAll, listAll, onIndexOutputClosed, open, open, setLockFactory, setReadChunkSize, sync, toString
 
Methods inherited from class org.apache.lucene.store.BaseDirectory
clearLock, ensureOpen, getLockFactory, makeLock
 
Methods inherited from class org.apache.lucene.store.Directory
copy
 
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-2014 Apache Software Foundation. All Rights Reserved.