NIOFSDirectory

class NIOFSDirectory(path: Path, lockFactory: LockFactory = FSLockFactory.default) : 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 [ ].

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 [ ] will throw a ClosedChannelException. If your application uses either Thread.interrupt or Future.cancel you should use the legacy RAFDirectory from the Lucene misc module in favor of NIOFSDirectory.

Constructors

Link copied to clipboard
constructor(path: Path, lockFactory: LockFactory = FSLockFactory.default)

Properties

Link copied to clipboard
val directory: Path
Link copied to clipboard
open override val pendingDeletions: MutableSet<String>

Functions

Link copied to clipboard
open override fun close()

Closes the directory.

Link copied to clipboard
open fun copyFrom(from: Directory, src: String, dest: String, context: IOContext)

Copies an existing src file from directory from to a non-existent file dest in this directory. The given IOContext is only used for opening the destination file.

Link copied to clipboard
open override fun createOutput(name: String, context: IOContext): IndexOutput

Creates a new, empty file in the directory and returns an IndexOutput instance for appending data to this file.

Link copied to clipboard
open override fun createTempOutput(prefix: String, suffix: String, context: IOContext): IndexOutput

Creates a new, empty, temporary file in the directory and returns an IndexOutput instance for appending data to this file.

Link copied to clipboard
open override fun deleteFile(name: String)

Removes an existing file in the directory.

Link copied to clipboard

Try to delete any pending files that we had previously tried to delete but failed because we are on Windows and the files were still held open.

Link copied to clipboard
open override fun ensureOpen()

Ensures this directory is still open.

Link copied to clipboard
open override fun fileLength(name: String): Long

Returns the byte length of a file in the directory.

Link copied to clipboard
open override fun listAll(): Array<String>

Returns names of all files stored in this directory. The output must be in sorted (UTF-16, java's String.compareTo) order.

Link copied to clipboard
open override fun obtainLock(name: String): Lock

Acquires and returns a Lock for a file with the given name.

Link copied to clipboard

Opens a checksum-computing stream for reading an existing file.

Link copied to clipboard
open override fun openInput(name: String, context: IOContext): IndexInput

Opens a stream for reading an existing file.

Link copied to clipboard
open override fun rename(source: String, dest: String)

Renames source file to dest file where dest must not already exist in the directory.

Link copied to clipboard
open override fun sync(names: MutableCollection<String>)

Ensures that any writes to these files are moved to stable storage (made durable).

Link copied to clipboard
open override fun syncMetaData()

Ensures that directory metadata, such as recent file renames, are moved to stable storage.

Link copied to clipboard
open override fun toString(): String