# Package org.apache.lucene.store

Binary i/o API, used for all index data.

- Interface Summary
  Interface | Description
  --- | ---
  RandomAccessInput | Random Access Index API.

- Class Summary
  Class | Description
  --- | ---
  BaseDirectory | Base implementation for a concrete `Directory` that uses a `LockFactory` for locking.
  BufferedChecksum | Wraps another `Checksum` with an internal buffer to speed up checksum calculations.
  BufferedChecksumIndexInput | Simple implementation of `ChecksumIndexInput` that wraps another input and delegates calls.
  BufferedIndexInput | Base implementation class for buffered `IndexInput`.
  ByteArrayDataInput | DataInput backed by a byte array.
  ByteArrayDataOutput | DataOutput backed by a byte array.
  ByteBufferIndexInput | Base IndexInput implementation that uses an array of ByteBuffers to represent a file.
  ByteBuffersDataInput | A `DataInput` implementing `RandomAccessInput` and reading data from a list of `ByteBuffer`s.
  ByteBuffersDataOutput | A `DataOutput` storing data in a list of `ByteBuffer`s.
  ByteBuffersDataOutput.ByteBufferRecycler | An implementation of a `ByteBuffer` allocation and recycling policy.
  ByteBuffersDirectory | A `ByteBuffer`-based `Directory` implementation that can be used to store index files on the heap.
  ByteBuffersIndexInput | An `IndexInput` implementing `RandomAccessInput` and backed by a `ByteBuffersDataInput`.
  ByteBuffersIndexOutput | An `IndexOutput` writing to a `ByteBuffersDataOutput`.
  ChecksumIndexInput | Extension of IndexInput, computing checksum as it goes.
  DataInput | Abstract base class for performing read operations of Lucene's low-level data types.
  DataOutput | Abstract base class for performing write operations of Lucene's low-level data types.
  Directory | A `Directory` provides an abstraction layer for storing a list of files.
  FileSwitchDirectory | Expert: A Directory instance that switches files between two other Directory instances.
  FilterDirectory | Directory implementation that delegates calls to another directory.
  FilterIndexInput | IndexInput implementation that delegates calls to another directory.
  FilterIndexOutput | IndexOutput implementation that delegates calls to another directory.
  FlushInfo | A FlushInfo provides information required for a FLUSH context.
  FSDirectory | Base class for Directory implementations that store index files in the file system.
  FSLockFactory | Base class for file system based locking implementation.
  IndexInput | Abstract base class for input from a file in a `Directory`.
  IndexOutput | A `DataOutput` for appending data to a file in a `Directory`.
  InputStreamDataInput | A `DataInput` wrapping a plain `InputStream`.
  IOContext | IOContext holds additional details on the merge/search context.
  Lock | An interprocess mutex lock.
  LockFactory | Base class for Locking implementation.
  LockStressTest | Simple standalone tool that forever acquires and releases a lock using a specific `LockFactory`.
  LockValidatingDirectoryWrapper | This class makes a best-effort check that a provided `Lock` is valid before any destructive filesystem operation.
  LockVerifyServer | Simple standalone server that must be running when you use `VerifyingLockFactory`.
  MergeInfo | A MergeInfo provides information required for a MERGE context.
  MMapDirectory | File-based `Directory` implementation that uses mmap for reading, and `FSDirectory.FSIndexOutput` for writing.
  NativeFSLockFactory | Implements `LockFactory` using native OS file locks.
  NIOFSDirectory | An `FSDirectory` implementation that uses java.nio's FileChannel's positional read, which allows multiple threads to read from the same file without synchronizing.
  NoLockFactory | Use this `LockFactory` to disable locking entirely.
  NRTCachingDirectory | Wraps a RAM-resident directory around any provided delegate directory, to be used during NRT search.
  OutputStreamDataOutput | A `DataOutput` wrapping a plain `OutputStream`.
  OutputStreamIndexOutput | Implementation class for buffered `IndexOutput` that writes to an `OutputStream`.
  RateLimitedIndexOutput | A `rate limiting` `IndexOutput`
  RateLimiter | Abstract base class to rate limit IO.
  RateLimiter.SimpleRateLimiter | Simple class to rate limit IO.
  SimpleFSLockFactory | Implements `LockFactory` using `Files.createFile(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>...)`.
  SingleInstanceLockFactory | Implements `LockFactory` for a single in-process instance, meaning all locking will take place through this one instance.
  SleepingLockWrapper | Directory that wraps another, and that sleeps and retries if obtaining the lock fails.
  TrackingDirectoryWrapper | A delegating Directory that records which files were written to and deleted.
  VerifyingLockFactory | A `LockFactory` that wraps another `LockFactory` and verifies that each lock obtain/release is "correct" (never results in two processes holding the lock at the same time).

- Enum Summary
  Enum | Description
  --- | ---
  IOContext.Context | Context is a enumerator which specifies the context in which the Directory is being used for.

- Exception Summary
  Exception | Description
  --- | ---
  AlreadyClosedException | This exception is thrown when there is an attempt to access something that has already been closed.
  LockObtainFailedException | This exception is thrown when the `write.lock` could not be acquired.
  LockReleaseFailedException | This exception is thrown when the `write.lock` could not be released.