## org.apache.lucene.store
Class FileSwitchDirectory

    java.lang.Object
      org.apache.lucene.store.Directory
          org.apache.lucene.store.FileSwitchDirectory

All Implemented Interfaces:
  Closeable

    public class FileSwitchDirectory

extends Directory

Expert: A Directory instance that switches files between two other Directory instances.

Files with the specified extensions are placed in the primary directory; others are placed in the secondary directory. The provided Set must not change once passed to this class, and must allow multiple threads to call contains at once.

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

Field Summary

Fields inherited from class org.apache.lucene.store.Directory
`isOpen, lockFactory`

Constructor Summary
`FileSwitchDirectory(Set<String> primaryExtensions, Directory primaryDir, Directory secondaryDir, boolean doClose)`

Method Summary
`void` `close()` Closes the store.
`IndexOutput` `createOutput(String name)` Creates a new, empty file in the directory with the given name.
`void` `deleteFile(String name)` Removes an existing file in the directory.
`boolean` `fileExists(String name)` Returns true iff a file with the given name exists.
`long` `fileLength(String name)` Returns the length of a file in the directory.
`long` `fileModified(String name)` Returns the time the named file was last modified.
`static String` `getExtension(String name)` Utility method to return a file's extension.
`Directory` `getPrimaryDir()` Return the primary directory
`Directory` `getSecondaryDir()` Return the secondary directory
`String[]` `listAll()` Returns an array of strings, one for each file in the directory.
`IndexInput` `openInput(String name)` Returns a stream reading an existing file.
`void` `sync(Collection<String> names)` Ensure that any writes to these files are moved to stable storage.
`void` `sync(String name)` Deprecated.
`void` `touchFile(String name)` Deprecated.

Methods inherited from class org.apache.lucene.store.Directory
`clearLock, copy, copy, ensureOpen, getLockFactory, getLockID, makeLock, openInput, setLockFactory, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### FileSwitchDirectory

    public FileSwitchDirectory(Set<String> primaryExtensions,
                               Directory primaryDir,
                               Directory secondaryDir,
                               boolean doClose)

Method Detail

### getPrimaryDir

    public Directory getPrimaryDir()

  Return the primary directory

### getSecondaryDir

    public Directory getSecondaryDir()

  Return the secondary directory

### close

    public void close()
               throws IOException

  Description copied from class: `Directory`
  Closes the store.

  Specified by:
    `close` in interface `Closeable`
  Specified by:
    `close` in class `Directory`
  Throws:
    `IOException`

### listAll

    public String[] listAll()
                     throws IOException

  Description copied from class: `Directory`
  Returns an array of strings, one for each file in the directory.

  Specified by:
    `listAll` in class `Directory`
  Throws:
    `NoSuchDirectoryException` - if the directory is not prepared for any write operations (such as `Directory.createOutput(String)`).
    `IOException` - in case of other IO errors

### getExtension

    public static String getExtension(String name)

  Utility method to return a file's extension.

### fileExists

    public boolean fileExists(String name)
                       throws IOException

  Description copied from class: `Directory`
  Returns true iff a file with the given name exists.

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

### fileModified

    public long fileModified(String name)
                      throws IOException

  Description copied from class: `Directory`
  Returns the time the named file was last modified.

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

### touchFile

    @Deprecated
    public void touchFile(String name)
                   throws IOException

  Deprecated.

  Description copied from class: `Directory`
  Set the modified time of an existing file to now.

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

### 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` 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:
    `FileNotFoundException` - if the file does not exist.
    `IOException` - if there was an IO error while retrieving the file's length.

### createOutput

    public IndexOutput createOutput(String name)
                             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`

### sync

    @Deprecated
    public void sync(String name)
              throws IOException

  Deprecated.

  Description copied from class: `Directory`
  Ensure that any writes to this file 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.

  Overrides:
    `sync` 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.

  Overrides:
    `sync` in class `Directory`
  Throws:
    `IOException`

### openInput

    public IndexInput openInput(String name)
                         throws IOException

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

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