## org.apache.lucene.store
Class FileSwitchDirectory

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

    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.

NOTE: this API is new and experimental and is subject to suddenly change in the next release.

Field Summary

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

Constructor Summary
`FileSwitchDirectory(java.util.Set primaryExtensions, Directory primaryDir, Directory secondaryDir, boolean doClose)`

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

Methods inherited from class org.apache.lucene.store.Directory
`clearLock, 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(java.util.Set 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 java.io.IOException

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

  Specified by:
    `close` in class `Directory`
  Throws:
    `java.io.IOException`

### listAll

    public java.lang.String[] listAll()
                               throws java.io.IOException

  Description copied from class: `Directory`
  Returns an array of strings, one for each file in the directory. Unlike `Directory.list()` this method does no filtering of the contents in a directory, and it will never return null (throws IOException instead). Currently this method simply falls back to `Directory.list()` for Directory impls outside of Lucene's core & contrib, but in 3.0 that method will be removed and this method will become abstract.

  Overrides:
    `listAll` in class `Directory`
  Throws:
    `java.io.IOException`

### list

    public java.lang.String[] list()
                            throws java.io.IOException

  Description copied from class: `Directory`
  List the files in the directory.

  Specified by:
    `list` in class `Directory`
  Throws:
    `java.io.IOException`

### getExtension

    public static java.lang.String getExtension(java.lang.String name)

  Utility method to return a file's extension.

### fileExists

    public boolean fileExists(java.lang.String name)
                       throws java.io.IOException

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

  Specified by:
    `fileExists` in class `Directory`
  Throws:
    `java.io.IOException`

### fileModified

    public long fileModified(java.lang.String name)
                      throws java.io.IOException

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

  Specified by:
    `fileModified` in class `Directory`
  Throws:
    `java.io.IOException`

### touchFile

    public void touchFile(java.lang.String name)
                   throws java.io.IOException

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

  Specified by:
    `touchFile` in class `Directory`
  Throws:
    `java.io.IOException`

### deleteFile

    public void deleteFile(java.lang.String name)
                    throws java.io.IOException

  Description copied from class: `Directory`
  Removes an existing file in the directory.

  Specified by:
    `deleteFile` in class `Directory`
  Throws:
    `java.io.IOException`

### renameFile

    public void renameFile(java.lang.String from,
                           java.lang.String to)
                    throws java.io.IOException

  Description copied from class: `Directory`
  Renames an existing file in the directory. If a file already exists with the new name, then it is replaced. This replacement is not guaranteed to be atomic.

  Specified by:
    `renameFile` in class `Directory`
  Throws:
    `java.io.IOException`

### fileLength

    public long fileLength(java.lang.String name)
                    throws java.io.IOException

  Description copied from class: `Directory`
  Returns the length of a file in the directory.

  Specified by:
    `fileLength` in class `Directory`
  Throws:
    `java.io.IOException`

### createOutput

    public IndexOutput createOutput(java.lang.String name)
                             throws java.io.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:
    `java.io.IOException`

### sync

    public void sync(java.lang.String name)
              throws java.io.IOException

  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:
    `java.io.IOException`

### openInput

    public IndexInput openInput(java.lang.String name)
                         throws java.io.IOException

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

  Specified by:
    `openInput` in class `Directory`
  Throws:
    `java.io.IOException`

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