org.apache.lucene.store

## Class FilterDirectory

- java.lang.Object
- - org.apache.lucene.store.Directory
  - - org.apache.lucene.store.FilterDirectory

- All Implemented Interfaces:
    Closeable, AutoCloseable
  Direct Known Subclasses:
    LockValidatingDirectoryWrapper, NRTCachingDirectory, SleepingLockWrapper, TrackingDirectoryWrapper

      public abstract class FilterDirectory
      extends Directory

  Directory implementation that delegates calls to another directory. This class can be used to add limitations on top of an existing `Directory` implementation such as `NRTCachingDirectory` or to add additional sanity checks for tests. However, if you plan to write your own `Directory` implementation, you should consider extending directly `Directory` or `BaseDirectory` rather than try to reuse functionality of existing `Directory`s by extending this class.
  NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Directory` | `in`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `FilterDirectory(Directory in)` Sole constructor, typically called from sub-classes.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Closes the store.
    `IndexOutput` | `createOutput(String name, IOContext context)` Creates a new, empty file in the directory with the given name.
    `IndexOutput` | `createTempOutput(String prefix, String suffix, IOContext context)` Creates a new, empty file for writing in the directory, with a temporary file name including prefix and suffix, ending with the reserved extension `.tmp`.
    `void` | `deleteFile(String name)` Removes an existing file in the directory.
    `long` | `fileLength(String name)` Returns the length of a file in the directory.
    `Directory` | `getDelegate()` Return the wrapped `Directory`.
    `String[]` | `listAll()` Returns an array of strings, one for each entry in the directory, in sorted (UTF16, java's String.compare) order.
    `Lock` | `obtainLock(String name)` Returns an obtained `Lock`.
    `IndexInput` | `openInput(String name, IOContext context)` Returns a stream reading an existing file.
    `void` | `rename(String source, String dest)` Renames `source` to `dest` as an atomic operation, where `dest` does not yet exist in the directory.
    `void` | `sync(Collection<String> names)` Ensure that any writes to these files are moved to stable storage.
    `void` | `syncMetaData()` Ensure that directory metadata, such as recent file renames, are made durable.
    `String` | `toString()`
    `static Directory` | `unwrap(Directory dir)` Get the wrapped instance by `dir` as long as this reader is an instance of `FilterDirectory`.

    - ### Methods inherited from class org.apache.lucene.store.Directory

      `copyFrom, ensureOpen, openChecksumInput, renameFile`

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

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

- - ### Field Detail

    - #### in

          protected final Directory in

  - ### Constructor Detail

    - #### FilterDirectory

          protected FilterDirectory(Directory in)

      Sole constructor, typically called from sub-classes.

  - ### Method Detail

    - #### unwrap

          public static Directory unwrap(Directory dir)

      Get the wrapped instance by `dir` as long as this reader is an instance of `FilterDirectory`.

    - #### getDelegate

          public final Directory getDelegate()

      Return the wrapped `Directory`.

    - #### listAll

          public String[] listAll()
                           throws IOException

      Description copied from class: `Directory`
      Returns an array of strings, one for each entry in the directory, in sorted (UTF16, java's String.compare) order.
      Specified by:
        `listAll` in class `Directory`
      Throws:
        `IOException` - in case of IO error

    - #### deleteFile

          public void deleteFile(String name)
                          throws IOException

      Description copied from class: `Directory`
      Removes an existing file in the directory.
      Specified by:
        `deleteFile` in class `Directory`
      Throws:
        `IOException`

    - #### fileLength

          public long fileLength(String name)
                          throws IOException

      Description copied from class: `Directory`
      Returns the length of a file in the directory. This method follows the following contract:
      - Throws `FileNotFoundException` or `NoSuchFileException` if the file does not exist.
      - Returns a value ≥0 if the file exists, which specifies its length.
      Specified by:
        `fileLength` in class `Directory`
      Parameters:
        `name` - the name of the file for which to return the length.
      Throws:
        `IOException` - if there was an IO error while retrieving the file's length.

    - #### createOutput

          public IndexOutput createOutput(String name,
                                          IOContext context)
                                   throws IOException

      Description copied from class: `Directory`
      Creates a new, empty file in the directory with the given name. Returns a stream writing this file.
      Specified by:
        `createOutput` in class `Directory`
      Throws:
        `IOException`

    - #### createTempOutput

          public IndexOutput createTempOutput(String prefix,
                                              String suffix,
                                              IOContext context)
                                       throws IOException

      Description copied from class: `Directory`
      Creates a new, empty file for writing in the directory, with a temporary file name including prefix and suffix, ending with the reserved extension `.tmp`. Use `IndexOutput.getName()` to see what name was used.
      Specified by:
        `createTempOutput` in class `Directory`
      Throws:
        `IOException`

    - #### sync

          public void sync(Collection<String> names)
                    throws IOException

      Description copied from class: `Directory`
      Ensure that any writes to these files are moved to stable storage. Lucene uses this to properly commit changes to the index, to prevent a machine/OS crash from corrupting the index.
      NOTE: Clients may call this method for same files over and over again, so some impls might optimize for that. For other impls the operation can be a noop, for various reasons.
      Specified by:
        `sync` in class `Directory`
      Throws:
        `IOException`

    - #### rename

          public void rename(String source,
                             String dest)
                      throws IOException

      Description copied from class: `Directory`
      Renames `source` to `dest` as an atomic operation, where `dest` does not yet exist in the directory.

      Notes: This method is used by IndexWriter to publish commits. It is ok if this operation is not truly atomic, for example both `source` and `dest` can be visible temporarily. It is just important that the contents of `dest` appear atomically, or an exception is thrown.

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

    - #### syncMetaData

          public void syncMetaData()
                            throws IOException

      Description copied from class: `Directory`
      Ensure that directory metadata, such as recent file renames, are made durable.
      Specified by:
        `syncMetaData` in class `Directory`
      Throws:
        `IOException`

    - #### openInput

          public IndexInput openInput(String name,
                                      IOContext context)
                               throws IOException

      Description copied from class: `Directory`
      Returns a stream reading an existing file.

      Throws `FileNotFoundException` or `NoSuchFileException` if the file does not exist.

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

    - #### obtainLock

          public Lock obtainLock(String name)
                          throws IOException

      Description copied from class: `Directory`
      Returns an obtained `Lock`.
      Specified by:
        `obtainLock` in class `Directory`
      Parameters:
        `name` - the name of the lock file
      Throws:
        `LockObtainFailedException` - (optional specific exception) if the lock could not be obtained because it is currently held elsewhere.
        `IOException` - if any i/o error occurs attempting to gain the lock

    - #### close

          public void close()
                     throws IOException

      Description copied from class: `Directory`
      Closes the store.
      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `Directory`
      Throws:
        `IOException`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Directory`

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