org.apache.lucene.store
Class FSDirectory

java.lang.Object
  extended by org.apache.lucene.store.Directory
      extended by org.apache.lucene.store.FSDirectory
Direct Known Subclasses:
MMapDirectory, NIOFSDirectory

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.

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.
 void sync(String name)
          Ensure that any writes to this file are moved to stable storage.
 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, ensureOpen, 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

sync

public void sync(String name)
          throws 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:
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.