Package org.apache.lucene.store
Class FileSwitchDirectory
- java.lang.Object
-
- org.apache.lucene.store.Directory
-
- org.apache.lucene.store.BaseDirectory
-
- org.apache.lucene.store.FileSwitchDirectory
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
public class FileSwitchDirectory extends BaseDirectory
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.
-
-
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.BaseDirectory
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 Modifier and Type Method Description 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 anDirectory.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 directoryDirectory
getSecondaryDir()
Return the secondary directoryString[]
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.BaseDirectory
clearLock, ensureOpen, getLockFactory, makeLock, setLockFactory
-
-
-
-
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, 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 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:- Must throw
FileNotFoundException
if the file does not exist (notjava.nio.file.NoSuchFileException
of Java 7). - 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:
IOException
- if there was an IO error while retrieving the file's length.
- Must throw
-
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 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.- Specified by:
sync
in classDirectory
- 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 areFSDirectory
andCompoundFileDirectory
.- Must throw
FileNotFoundException
if the file does not exist (notjava.nio.file.NoSuchFileException
of Java 7).- Specified by:
openInput
in classDirectory
- Throws:
IOException
- Must throw
-
createSlicer
public Directory.IndexInputSlicer createSlicer(String name, IOContext context) throws IOException
Description copied from class:Directory
Creates anDirectory.IndexInputSlicer
for the given file name. IndexInputSlicer allows otherDirectory
implementations to efficiently open one or more slicedIndexInput
instances from a single file handle. The underlying file handle is kept open until theDirectory.IndexInputSlicer
is closed.- Must throw
FileNotFoundException
if the file does not exist (notjava.nio.file.NoSuchFileException
of Java 7).- Overrides:
createSlicer
in classDirectory
- Throws:
IOException
- if anIOException
occurs
- Must throw
-
-