## org.apache.lucene.store
Class FSDirectory

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

Direct Known Subclasses:
  MMapDirectory

    public class FSDirectory

extends Directory

Straightforward implementation of `Directory` as a directory of files. Locking implementation is by default the `SimpleFSLockFactory`, but can be changed either by passing in a `LockFactory` instance to `getDirectory`, or specifying the LockFactory class by setting `org.apache.lucene.store.FSDirectoryLockFactoryClass` Java system property, or by calling `Directory.setLockFactory(org.apache.lucene.store.LockFactory)` after creating the Directory.

Directories are cached, so that, for a given canonical path, the same FSDirectory instance will always be returned by `getDirectory`. This permits synchronization on directories.

Author:
  Doug Cutting
See Also:
  `Directory`

Nested Class Summary
`protected static class` `FSDirectory.FSIndexInput`
`protected static class` `FSDirectory.FSIndexOutput`

Field Summary

`static String`

`LOCK_DIR`
Deprecated. As of 2.1, `LOCK_DIR` is unused because the write.lock is now stored by default in the index directory. If you really want to store locks elsewhere you can create your own `SimpleFSLockFactory` (or `NativeFSLockFactory`, etc.) passing in your preferred lock directory. Then, pass this `LockFactory` instance to one of the `getDirectory` methods that take a `lockFactory` (for example, `getDirectory(String, LockFactory)`).

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

Constructor Summary
`protected` `FSDirectory()`

Method Summary
`void` `close()` Closes the store to future operations.
`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 in bytes of a file in the directory.
`static long` `fileModified(File directory, String name)` Returns the time the named file was last modified.
`long` `fileModified(String name)` Returns the time the named file was last modified.
`static FSDirectory` `getDirectory(File file)` Returns the directory instance for the named location.
`static FSDirectory` `getDirectory(File file, boolean create)` Deprecated. Use IndexWriter's create flag, instead, to create a new index.
`static FSDirectory` `getDirectory(File file, LockFactory lockFactory)` Returns the directory instance for the named location.
`static FSDirectory` `getDirectory(String path)` Returns the directory instance for the named location.
`static FSDirectory` `getDirectory(String path, boolean create)` Deprecated. Use IndexWriter's create flag, instead, to create a new index.
`static FSDirectory` `getDirectory(String path, LockFactory lockFactory)` Returns the directory instance for the named location.
`static boolean` `getDisableLocks()` Returns whether Lucene's use of lock files is disabled.
`File` `getFile()`
`String` `getLockID()` Return a string identifier that uniquely differentiates this Directory instance from other Directory instances.
`String[]` `list()` Returns an array of strings, one for each Lucene index file in the directory.
`IndexInput` `openInput(String name)` Returns a stream reading an existing file.
`IndexInput` `openInput(String name, int bufferSize)` Returns a stream reading an existing file, with the specified read buffer size.
`void` `renameFile(String from, String to)` Deprecated.
`static void` `setDisableLocks(boolean doDisableLocks)` Set whether Lucene's use of lock files is disabled.
`String` `toString()` For debug output.
`void` `touchFile(String name)` Set the modified time of an existing file to now.

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

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

Field Detail

### LOCK_DIR

    public static final String LOCK_DIR

  Deprecated. As of 2.1, `LOCK_DIR` is unused because the write.lock is now stored by default in the index directory. If you really want to store locks elsewhere you can create your own `SimpleFSLockFactory` (or `NativeFSLockFactory`, etc.) passing in your preferred lock directory. Then, pass this `LockFactory` instance to one of the `getDirectory` methods that take a `lockFactory` (for example, `getDirectory(String, LockFactory)`).
  Directory specified by `org.apache.lucene.lockDir` or `java.io.tmpdir` system property.

Constructor Detail

### FSDirectory

    protected FSDirectory()

Method Detail

### setDisableLocks

    public static void setDisableLocks(boolean doDisableLocks)

  Set whether Lucene's use of lock files is disabled. By default, lock files are enabled. They should only be disabled if the index is on a read-only medium like a CD-ROM.

### getDisableLocks

    public static boolean getDisableLocks()

  Returns whether Lucene's use of lock files is disabled.

  Returns:
    true if locks are disabled, false if locks are enabled.

### getDirectory

    public static FSDirectory getDirectory(String path)
                                    throws IOException

  Returns the directory instance for the named location.

  Parameters:
    `path` - the path to the directory.
  Returns:
    the FSDirectory for the named file.
  Throws:
    `IOException`

### getDirectory

    public static FSDirectory getDirectory(String path,
                                           LockFactory lockFactory)
                                    throws IOException

  Returns the directory instance for the named location.

  Parameters:
    `path` - the path to the directory.
    `lockFactory` - instance of `LockFactory` providing the locking implementation.
  Returns:
    the FSDirectory for the named file.
  Throws:
    `IOException`

### getDirectory

    public static FSDirectory getDirectory(File file)
                                    throws IOException

  Returns the directory instance for the named location.

  Parameters:
    `file` - the path to the directory.
  Returns:
    the FSDirectory for the named file.
  Throws:
    `IOException`

### getDirectory

    public static FSDirectory getDirectory(File file,
                                           LockFactory lockFactory)
                                    throws IOException

  Returns the directory instance for the named location.

  Parameters:
    `file` - the path to the directory.
    `lockFactory` - instance of `LockFactory` providing the locking implementation.
  Returns:
    the FSDirectory for the named file.
  Throws:
    `IOException`

### getDirectory

    public static FSDirectory getDirectory(String path,
                                           boolean create)
                                    throws IOException

  Deprecated. Use IndexWriter's create flag, instead, to create a new index.

  Returns the directory instance for the named location.

  Parameters:
    `path` - the path to the directory.
    `create` - if true, create, or erase any existing contents.
  Returns:
    the FSDirectory for the named file.
  Throws:
    `IOException`

### getDirectory

    public static FSDirectory getDirectory(File file,
                                           boolean create)
                                    throws IOException

  Deprecated. Use IndexWriter's create flag, instead, to create a new index.

  Returns the directory instance for the named location.

  Parameters:
    `file` - the path to the directory.
    `create` - if true, create, or erase any existing contents.
  Returns:
    the FSDirectory for the named file.
  Throws:
    `IOException`

### list

    public String[] list()

  Returns an array of strings, one for each Lucene index file in the directory.

  Specified by:
    `list` in class `Directory`

### fileExists

    public boolean fileExists(String name)

  Returns true iff a file with the given name exists.

  Specified by:
    `fileExists` in class `Directory`

### fileModified

    public long fileModified(String name)

  Returns the time the named file was last modified.

  Specified by:
    `fileModified` in class `Directory`

### fileModified

    public static long fileModified(File directory,
                                    String name)

  Returns the time the named file was last modified.

### touchFile

    public void touchFile(String name)

  Set the modified time of an existing file to now.

  Specified by:
    `touchFile` in class `Directory`

### fileLength

    public long fileLength(String name)

  Returns the length in bytes of a file in the directory.

  Specified by:
    `fileLength` in class `Directory`

### deleteFile

    public void deleteFile(String name)
                    throws IOException

  Removes an existing file in the directory.

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

### renameFile

    public void renameFile(String from,
                           String to)
                    throws IOException

  Deprecated.

  Renames an existing file in the directory. Warning: This is not atomic.

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

### createOutput

    public IndexOutput createOutput(String name)
                             throws IOException

  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`

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

### openInput

    public IndexInput openInput(String name,
                                int bufferSize)
                         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 `CompoundFileReader`.

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

### getLockID

    public String getLockID()

  Description copied from class: `Directory`
  Return a string identifier that uniquely differentiates this Directory instance from other Directory instances. This ID should be the same if two Directory instances (even in different JVMs and/or on different machines) are considered "the same index". This is how locking "scopes" to the right index.

  Overrides:
    `getLockID` in class `Directory`

### close

    public void close()

  Closes the store to future operations.

  Specified by:
    `close` in class `Directory`

### getFile

    public File getFile()

### toString

    public String toString()

  For debug output.

  Overrides:
    `toString` in class `Object`

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