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 and Description
    --- | ---
    `static BiFunction<String,ByteBuffersDataOutput,IndexInput>` | `OUTPUT_AS_BYTE_ARRAY`
    `static BiFunction<String,ByteBuffersDataOutput,IndexInput>` | `OUTPUT_AS_MANY_BUFFERS`
    `static BiFunction<String,ByteBuffersDataOutput,IndexInput>` | `OUTPUT_AS_MANY_BUFFERS_LUCENE`
    `static BiFunction<String,ByteBuffersDataOutput,IndexInput>` | `OUTPUT_AS_ONE_BUFFER`

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

      `isOpen, lockFactory`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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.
    `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 Detail

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

    - #### OUTPUT_AS_MANY_BUFFERS_LUCENE

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

  - ### Constructor Detail

    - #### ByteBuffersDirectory

          public ByteBuffersDirectory()

    - #### ByteBuffersDirectory

          public ByteBuffersDirectory(LockFactory lockFactory)

    - #### ByteBuffersDirectory

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

  - ### Method Detail

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

    - #### 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 `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      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`

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.