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

Package org.apache.lucene.store

# Class ByteBuffersDirectory

java.lang.Object
org.apache.lucene.store.Directory
org.apache.lucene.store.BaseDirectory
org.apache.lucene.store.ByteBuffersDirectory

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public final class ByteBuffersDirectory extends BaseDirectory
A `ByteBuffer`-based `Directory` implementation that can be used to store index files on the heap.

Important: Note that `MMapDirectory` is nearly always a better choice as it uses OS caches more effectively (through memory-mapped buffers). A heap-based directory like this one can have the advantage in case of ephemeral, small, short-lived indexes when disk syncs provide an additional overhead.

WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final BiFunction<String,ByteBuffersDataOutput,IndexInput>`
  `OUTPUT_AS_BYTE_ARRAY`
  `static final BiFunction<String,ByteBuffersDataOutput,IndexInput>`
  `OUTPUT_AS_MANY_BUFFERS`
  `static final BiFunction<String,ByteBuffersDataOutput,IndexInput>`
  `OUTPUT_AS_ONE_BUFFER`

  ### Fields inherited from class org.apache.lucene.store.BaseDirectory

  `isOpen, lockFactory`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ByteBuffersDirectory()`
  `ByteBuffersDirectory(LockFactory lockFactory)`
  `ByteBuffersDirectory(LockFactory factory, Supplier<ByteBuffersDataOutput> bbOutputSupplier, BiFunction<String,ByteBuffersDataOutput,IndexInput> outputToInput)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Closes the directory.
  `IndexOutput`
  `createOutput(String name, IOContext context)`
  Creates a new, empty file in the directory and returns an `IndexOutput` instance for appending data to this file.
  `IndexOutput`
  `createTempOutput(String prefix, String suffix, IOContext context)`
  Creates a new, empty, temporary file in the directory and returns an `IndexOutput` instance for appending data to this file.
  `void`
  `deleteFile(String name)`
  Removes an existing file in the directory.
  `boolean`
  `fileExists(String name)`
  `long`
  `fileLength(String name)`
  Returns the byte length of a file in the directory.
  `Set<String>`
  `getPendingDeletions()`
  Returns a set of files currently pending deletion in this directory.
  `String[]`
  `listAll()`
  Returns names of all files stored in this directory.
  `IndexInput`
  `openInput(String name, IOContext context)`
  Opens a stream for reading an existing file.
  `void`
  `rename(String source, String dest)`
  Renames `source` file to `dest` file where `dest` must not already exist in the directory.
  `void`
  `sync(Collection<String> names)`
  Ensures that any writes to these files are moved to stable storage (made durable).
  `void`
  `syncMetaData()`
  Ensures that directory metadata, such as recent file renames, are moved to stable storage.

  ### Methods inherited from class org.apache.lucene.store.BaseDirectory

  `ensureOpen, obtainLock, toString`

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

- ## Field Details

  - ### OUTPUT_AS_MANY_BUFFERS

    public static final BiFunction<String,ByteBuffersDataOutput,IndexInput> OUTPUT_AS_MANY_BUFFERS

  - ### OUTPUT_AS_ONE_BUFFER

    public static final BiFunction<String,ByteBuffersDataOutput,IndexInput> OUTPUT_AS_ONE_BUFFER

  - ### OUTPUT_AS_BYTE_ARRAY

    public static final BiFunction<String,ByteBuffersDataOutput,IndexInput> OUTPUT_AS_BYTE_ARRAY

- ## Constructor Details

  - ### ByteBuffersDirectory

    public ByteBuffersDirectory()

  - ### ByteBuffersDirectory

    public ByteBuffersDirectory(LockFactory lockFactory)

  - ### ByteBuffersDirectory

    public ByteBuffersDirectory(LockFactory factory, Supplier<ByteBuffersDataOutput> bbOutputSupplier, BiFunction<String,ByteBuffersDataOutput,IndexInput> outputToInput)

- ## Method Details

  - ### listAll

    public String[] listAll() throws IOException
    Description copied from class: `Directory`
    Returns names of all files stored in this directory. The output must be in sorted (UTF-16, java's `String.compareTo(java.lang.String)`) order.
    Specified by:
      `listAll` in class `Directory`
    Throws:
      `IOException` - in case of I/O error

  - ### deleteFile

    public void deleteFile(String name) throws IOException
    Description copied from class: `Directory`
    Removes an existing file in the directory.

    This method must throw either `NoSuchFileException` or `FileNotFoundException` if `name` points to a non-existing file.

    Specified by:
      `deleteFile` in class `Directory`
    Parameters:
      `name` - the name of an existing file.
    Throws:
      `IOException` - in case of I/O error

  - ### fileLength

    public long fileLength(String name) throws IOException
    Description copied from class: `Directory`
    Returns the byte length of a file in the directory.

    This method must throw either `NoSuchFileException` or `FileNotFoundException` if `name` points to a non-existing file.

    Specified by:
      `fileLength` in class `Directory`
    Parameters:
      `name` - the name of an existing file.
    Throws:
      `IOException` - in case of I/O error

  - ### fileExists

    public boolean fileExists(String name)

  - ### createOutput

    public IndexOutput createOutput(String name, IOContext context) throws IOException
    Description copied from class: `Directory`
    Creates a new, empty file in the directory and returns an `IndexOutput` instance for appending data to this file.

    This method must throw `FileAlreadyExistsException` if the file already exists.

    Specified by:
      `createOutput` in class `Directory`
    Parameters:
      `name` - the name of the file to create.
    Throws:
      `IOException` - in case of I/O error

  - ### createTempOutput

    public IndexOutput createTempOutput(String prefix, String suffix, IOContext context) throws IOException
    Description copied from class: `Directory`
    Creates a new, empty, temporary file in the directory and returns an `IndexOutput` instance for appending data to this file.

    The temporary file name (accessible via `IndexOutput.getName()`) will start with `prefix`, end with `suffix` and have a reserved file extension `.tmp`.

    Specified by:
      `createTempOutput` in class `Directory`
    Throws:
      `IOException`

  - ### rename

    public void rename(String source, String dest) throws IOException
    Description copied from class: `Directory`
    Renames `source` file to `dest` file where `dest` must not already exist in the directory.

    It is permitted for this operation to not be truly atomic, for example both `source` and `dest` can be visible temporarily in `Directory.listAll()`. However, the implementation of this method must ensure the content of `dest` appears as the entire `source` atomically. So once `dest` is visible for readers, the entire content of previous `source` is visible.

    This method is used by IndexWriter to publish commits.

    Specified by:
      `rename` in class `Directory`
    Throws:
      `IOException`

  - ### sync

    public void sync(Collection<String> names) throws IOException
    Description copied from class: `Directory`
    Ensures that any writes to these files are moved to stable storage (made durable).

    Lucene uses this to properly commit changes to the index, to prevent a machine/OS crash from corrupting the index.

    Specified by:
      `sync` in class `Directory`
    Throws:
      `IOException`
    See Also:
      - `Directory.syncMetaData()`

  - ### syncMetaData

    public void syncMetaData() throws IOException
    Description copied from class: `Directory`
    Ensures that directory metadata, such as recent file renames, are moved to stable storage.
    Specified by:
      `syncMetaData` in class `Directory`
    Throws:
      `IOException`
    See Also:
      - `Directory.sync(Collection)`

  - ### openInput

    public IndexInput openInput(String name, IOContext context) throws IOException
    Description copied from class: `Directory`
    Opens a stream for reading an existing file.

    This method must throw either `NoSuchFileException` or `FileNotFoundException` if `name` points to a non-existing file.

    Specified by:
      `openInput` in class `Directory`
    Parameters:
      `name` - the name of an existing file.
    Throws:
      `IOException` - in case of I/O error

  - ### close

    public void close() throws IOException
    Description copied from class: `Directory`
    Closes the directory.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Specified by:
      `close` in class `Directory`
    Throws:
      `IOException`

  - ### getPendingDeletions

    public Set<String> getPendingDeletions()
    Description copied from class: `Directory`
    Returns a set of files currently pending deletion in this directory.
    Specified by:
      `getPendingDeletions` in class `Directory`