public class NIOFSDirectory extends FSDirectory
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 the legacy RAFDirectory
from the Lucene misc
module in favor of NIOFSDirectory
.
directory
isOpen, lockFactory
Constructor and Description |
---|
NIOFSDirectory(Path path)
Create a new NIOFSDirectory for the named location and
FSLockFactory.getDefault() . |
NIOFSDirectory(Path path,
LockFactory lockFactory)
Create a new NIOFSDirectory for the named location.
|
Modifier and Type | Method and Description |
---|---|
IndexInput |
openInput(String name,
IOContext context)
Opens a stream for reading an existing file.
|
close, createOutput, createTempOutput, deleteFile, deletePendingFiles, ensureCanRead, fileLength, fsync, getDirectory, getPendingDeletions, listAll, listAll, open, open, rename, sync, syncMetaData, toString
ensureOpen, obtainLock
copyFrom, getTempFileName, openChecksumInput
public NIOFSDirectory(Path path, LockFactory lockFactory) throws IOException
path
- the path of the directorylockFactory
- the lock factory to useIOException
- if there is a low-level I/O errorpublic NIOFSDirectory(Path path) throws IOException
FSLockFactory.getDefault()
.
The directory is created at the named location if it does not yet exist.path
- the path of the directoryIOException
- if there is a low-level I/O errorpublic IndexInput openInput(String name, IOContext context) throws IOException
Directory
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.openInput
in class Directory
name
- the name of an existing file.IOException
- in case of I/O errorCopyright © 2000-2021 Apache Software Foundation. All Rights Reserved.