Package org.apache.lucene.store
Class FileSwitchDirectory
- java.lang.Object
-
- org.apache.lucene.store.Directory
-
- org.apache.lucene.store.FileSwitchDirectory
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
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
Constructors Constructor Description FileSwitchDirectory(Set<String> primaryExtensions, Directory primaryDir, Directory secondaryDir, boolean doClose)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description 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 directoryDirectory
getSecondaryDir()
Return the secondary directoryString[]
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(String name)
Deprecated.void
sync(Collection<String> names)
Ensure that any writes to these files are moved to stable storage.void
touchFile(String name)
Deprecated.-
Methods inherited from class org.apache.lucene.store.Directory
clearLock, copy, copy, ensureOpen, getLockFactory, getLockID, makeLock, openInput, setLockFactory, toString
-
-
-
-
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 interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classDirectory
- 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 classDirectory
- Throws:
NoSuchDirectoryException
- if the directory is not prepared for any write operations (such asDirectory.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 classDirectory
- 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 classDirectory
- 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 classDirectory
- 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 classDirectory
- 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 classDirectory
- 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.
- Throws
-
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 classDirectory
- 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 classDirectory
- 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 classDirectory
- 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 classDirectory
- Throws:
IOException
-
-