Class NIOFSDirectory
- java.lang.Object
-
- org.apache.lucene.store.Directory
-
- org.apache.lucene.store.BaseDirectory
-
- org.apache.lucene.store.FSDirectory
-
- org.apache.lucene.store.NIOFSDirectory
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
public class NIOFSDirectory extends FSDirectory
AnFSDirectory
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 aClosedChannelException
. If your application uses eitherThread.interrupt()
orFuture.cancel(boolean)
you should use the legacyRAFDirectory
from the Lucenemisc
module in favor ofNIOFSDirectory
.
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.store.FSDirectory
directory
-
Fields inherited from class org.apache.lucene.store.BaseDirectory
isOpen, lockFactory
-
-
Constructor Summary
Constructors Constructor Description NIOFSDirectory(Path path)
Create a new NIOFSDirectory for the named location andFSLockFactory.getDefault()
.NIOFSDirectory(Path path, LockFactory lockFactory)
Create a new NIOFSDirectory for the named location.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description IndexInput
openInput(String name, IOContext context)
Opens a stream for reading an existing file.-
Methods inherited from class org.apache.lucene.store.FSDirectory
close, createOutput, createTempOutput, deleteFile, deletePendingFiles, ensureCanRead, fileLength, fsync, getDirectory, getPendingDeletions, listAll, listAll, open, open, rename, sync, syncMetaData, toString
-
Methods inherited from class org.apache.lucene.store.BaseDirectory
ensureOpen, obtainLock
-
Methods inherited from class org.apache.lucene.store.Directory
copyFrom, getTempFileName, openChecksumInput
-
-
-
-
Constructor Detail
-
NIOFSDirectory
public NIOFSDirectory(Path path, LockFactory lockFactory) throws IOException
Create a new NIOFSDirectory for the named location. The directory is created at the named location if it does not yet exist.- Parameters:
path
- the path of the directorylockFactory
- the lock factory to use- Throws:
IOException
- if there is a low-level I/O error
-
NIOFSDirectory
public NIOFSDirectory(Path path) throws IOException
Create a new NIOFSDirectory for the named location andFSLockFactory.getDefault()
. The directory is created at the named location if it does not yet exist.- 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
Description copied from class:Directory
Opens a stream for reading an existing file.This method must throw either
NoSuchFileException
orFileNotFoundException
ifname
points to a non-existing file.- Specified by:
openInput
in classDirectory
- Parameters:
name
- the name of an existing file.- Throws:
IOException
- in case of I/O error
-
-