public class DirectIOLinuxDirectory extends FSDirectory
Directoryimplementation that uses the Linux-specific O_DIRECT flag to bypass all OS level caching. To use this you must compile NativePosixUtil.cpp (exposes Linux-specific APIs through JNI) for your platform.
WARNING: this code is very new and quite easily could contain horrible bugs. For example, here's one known issue: if you use seek in IndexOutput, and then write more than one buffer's worth of bytes, then the file will be wrong. Lucene does not do this (only writes small number of bytes after seek).
DEFAULT_READ_CHUNK_SIZE, directory, staleFiles
|Constructor and Description|
Create a new NIOFSDirectory for the named location.
|Modifier and Type||Method and Description|
Creates an IndexOutput for the file with the given name.
Returns a stream reading an existing file, with the specified read buffer size.
close, deleteFile, ensureCanWrite, fileExists, fileLength, fileModified, fileModified, fsync, getDirectory, getFile, getLockID, getReadChunkSize, listAll, listAll, onIndexOutputClosed, open, open, openInput, setLockFactory, setReadChunkSize, sync, sync, toString, touchFile
clearLock, copy, copy, ensureOpen, getLockFactory, makeLock
public DirectIOLinuxDirectory(File path, LockFactory lockFactory, int forcedBufferSize) throws IOException
path- the path of the directory
lockFactory- the lock factory to use, or null for the default (
forcedBufferSize- if this is 0, just use Lucene's default buffer size; else, force this buffer size. For best performance, force the buffer size to something fairly large (eg 1 MB), but note that this will eat up the JRE's direct buffer storage space
public IndexInput openInput(String name, int bufferSize) throws IOException