Class NIOFSDirectory
- All Implemented Interfaces:
Closeable,AutoCloseable
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
Nested ClassesModifier and TypeClassDescriptionprotected static classReads bytes withFileChannel.read(ByteBuffer, long)Nested classes/interfaces inherited from class org.apache.lucene.store.FSDirectory
FSDirectory.FSIndexInput, FSDirectory.FSIndexOutputNested 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, staleFilesFields inherited from class org.apache.lucene.store.BaseDirectory
isOpen, lockFactory -
Constructor Summary
ConstructorsConstructorDescriptionNIOFSDirectory(File path) Create a new NIOFSDirectory for the named location andNativeFSLockFactory.NIOFSDirectory(File path, LockFactory lockFactory) Create a new NIOFSDirectory for the named location. -
Method Summary
Modifier and TypeMethodDescriptioncreateSlicer(String name, IOContext context) Creates anDirectory.IndexInputSlicerfor the given file name.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, toStringMethods inherited from class org.apache.lucene.store.BaseDirectory
clearLock, ensureOpen, getLockFactory, makeLock
-
Constructor Details
-
NIOFSDirectory
Create a new NIOFSDirectory for the named location.- Parameters:
path- the path of the directorylockFactory- the lock factory to use, or null for the default (NativeFSLockFactory);- Throws:
IOException- if there is a low-level I/O error
-
NIOFSDirectory
Create a new NIOFSDirectory for the named location andNativeFSLockFactory.- Parameters:
path- the path of the directory- Throws:
IOException- if there is a low-level I/O error
-
-
Method Details
-
openInput
Creates an IndexInput for the file with the given name.- Specified by:
openInputin classDirectory- Throws:
IOException
-
createSlicer
Description copied from class:DirectoryCreates anDirectory.IndexInputSlicerfor the given file name. IndexInputSlicer allows otherDirectoryimplementations to efficiently open one or more slicedIndexInputinstances from a single file handle. The underlying file handle is kept open until theDirectory.IndexInputSliceris closed.- Must throw
FileNotFoundExceptionif the file does not exist (notjava.nio.file.NoSuchFileExceptionof Java 7).- Overrides:
createSlicerin classDirectory- Throws:
IOException- if anIOExceptionoccurs
- Must throw
-