RAFDirectory (Lucene 10.5.0 misc API)
Description: declaration: package: org.apache.lucene.misc.store, class: RAFDirectory

Package org.apache.lucene.misc.store

# Class RAFDirectory

java.lang.Object
org.apache.lucene.store.Directory
org.apache.lucene.store.BaseDirectory
org.apache.lucene.store.FSDirectory
org.apache.lucene.misc.store.RAFDirectory

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public class RAFDirectory extends FSDirectory
A straightforward implementation of `FSDirectory` using java.io.RandomAccessFile. However, this class has poor concurrent performance (multiple threads will bottleneck) as it synchronizes when multiple threads read from the same file. It's usually better to use `NIOFSDirectory` or `MMapDirectory` instead.

NOTE: Because this uses RandomAccessFile, it will generally not work with non-default filesystem providers. It is only provided for applications that relied on the fact that RandomAccessFile's IO was not interruptible.

- ## 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
  `RAFDirectory(Path path)`
  Create a new RAFDirectory for the named location and `FSLockFactory.getDefault()`.
  `RAFDirectory(Path path, LockFactory lockFactory)`
  Create a new RAFDirectory for the named location.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `IndexInput`
  `openInput(String name, IOContext context)`
  Creates an IndexInput for the file with the given name.

  ### 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`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### RAFDirectory

    public RAFDirectory(Path path, LockFactory lockFactory) throws IOException
    Create a new RAFDirectory for the named location. The directory is created at the named location if it does not yet exist.
    Parameters:
      `path` - the path of the directory
      `lockFactory` - the lock factory to use
    Throws:
      `IOException` - if there is a low-level I/O error

  - ### RAFDirectory

    public RAFDirectory(Path path) throws IOException
    Create a new RAFDirectory for the named location and `FSLockFactory.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 Details

  - ### openInput

    public IndexInput openInput(String name, IOContext context) throws IOException
    Creates an IndexInput for the file with the given name.
    Specified by:
      `openInput` in class `Directory`
    Throws:
      `IOException`