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

Nested Class Summary

Nested classes/interfaces inherited from class org.apache.lucene.store.Directory
`Directory.IndexInputSlicer`

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, IOContext context)` Creates a new, empty file in the directory with the given name.
`Directory.IndexInputSlicer` `createSlicer(String name, IOContext context)` Creates an `Directory.IndexInputSlicer` for the given file 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.
`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, IOContext context)` Returns a stream reading an existing file, with the specified read buffer size.
`void` `sync(Collection<String> names)` Ensure that any writes to these files are moved to stable storage.

Methods inherited from class org.apache.lucene.store.Directory
`clearLock, copy, ensureOpen, getLockFactory, getLockID, makeLock, 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, IOContext)`).
    `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`

### 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:
  - Must throw `FileNotFoundException` if the file does not exist (not `java.nio.file.NoSuchFileException` of Java 7).
  - 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`

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

### openInput

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

  Description copied from class: `Directory`
  Returns a stream reading an existing file, with the specified read buffer size. The particular Directory implementation may ignore the buffer size. Currently the only Directory implementations that respect this parameter are `FSDirectory` and `CompoundFileDirectory`.
  - Must throw `FileNotFoundException` if the file does not exist (not `java.nio.file.NoSuchFileException` of Java 7).

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

### createSlicer

    public Directory.IndexInputSlicer createSlicer(String name,
                                                   IOContext context)
                                            throws IOException

  Description copied from class: `Directory`
  Creates an `Directory.IndexInputSlicer` for the given file name. IndexInputSlicer allows other `Directory` implementations to efficiently open one or more sliced `IndexInput` instances from a single file handle. The underlying file handle is kept open until the `Directory.IndexInputSlicer` is closed.
  - Must throw `FileNotFoundException` if the file does not exist (not `java.nio.file.NoSuchFileException` of Java 7).

  Overrides:
    `createSlicer` in class `Directory`
  Throws:
    `IOException` - if an `IOException` occurs

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