Class Directory
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
BaseDirectory
,CompoundDirectory
,FileSwitchDirectory
,FilterDirectory
Directory
provides an abstraction layer for storing a list of files. A directory
contains only files (no sub-folder hierarchy).
Implementing classes must comply with the following:
- A file in a directory can be created (
createOutput(java.lang.String, org.apache.lucene.store.IOContext)
), appended to, then closed. - A file open for writing may not be available for read access until the corresponding
IndexOutput
is closed. - Once a file is created it must only be opened for input (
openInput(java.lang.String, org.apache.lucene.store.IOContext)
), or deleted (deleteFile(java.lang.String)
). CallingcreateOutput(java.lang.String, org.apache.lucene.store.IOContext)
on an existing file must throwFileAlreadyExistsException
.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract void
close()
Closes the directory.void
Copies an existingsrc
file from directoryfrom
to a non-existent filedest
in this directory.abstract IndexOutput
createOutput
(String name, IOContext context) Creates a new, empty file in the directory and returns anIndexOutput
instance for appending data to this file.abstract IndexOutput
createTempOutput
(String prefix, String suffix, IOContext context) Creates a new, empty, temporary file in the directory and returns anIndexOutput
instance for appending data to this file.abstract void
deleteFile
(String name) Removes an existing file in the directory.protected void
Ensures this directory is still open.abstract long
fileLength
(String name) Returns the byte length of a file in the directory.Returns a set of files currently pending deletion in this directory.protected static String
getTempFileName
(String prefix, String suffix, long counter) Creates a file name for a temporary file.abstract String[]
listAll()
Returns names of all files stored in this directory.abstract Lock
obtainLock
(String name) Acquires and returns aLock
for a file with the given name.openChecksumInput
(String name, IOContext context) Opens a checksum-computing stream for reading an existing file.abstract IndexInput
Opens a stream for reading an existing file.abstract void
Renamessource
file todest
file wheredest
must not already exist in the directory.abstract void
sync
(Collection<String> names) Ensures that any writes to these files are moved to stable storage (made durable).abstract void
Ensures that directory metadata, such as recent file renames, are moved to stable storage.toString()
-
Constructor Details
-
Directory
public Directory()
-
-
Method Details
-
listAll
Returns names of all files stored in this directory. The output must be in sorted (UTF-16, java'sString.compareTo(java.lang.String)
) order.- Throws:
IOException
- in case of I/O error
-
deleteFile
Removes an existing file in the directory.This method must throw either
NoSuchFileException
orFileNotFoundException
ifname
points to a non-existing file.- Parameters:
name
- the name of an existing file.- Throws:
IOException
- in case of I/O error
-
fileLength
Returns the byte length of a file in the directory.This method must throw either
NoSuchFileException
orFileNotFoundException
ifname
points to a non-existing file.- Parameters:
name
- the name of an existing file.- Throws:
IOException
- in case of I/O error
-
createOutput
Creates a new, empty file in the directory and returns anIndexOutput
instance for appending data to this file.This method must throw
FileAlreadyExistsException
if the file already exists.- Parameters:
name
- the name of the file to create.- Throws:
IOException
- in case of I/O error
-
createTempOutput
public abstract IndexOutput createTempOutput(String prefix, String suffix, IOContext context) throws IOException Creates a new, empty, temporary file in the directory and returns anIndexOutput
instance for appending data to this file.The temporary file name (accessible via
IndexOutput.getName()
) will start withprefix
, end withsuffix
and have a reserved file extension.tmp
.- Throws:
IOException
-
sync
Ensures that any writes to these files are moved to stable storage (made durable).Lucene uses this to properly commit changes to the index, to prevent a machine/OS crash from corrupting the index.
- Throws:
IOException
- See Also:
-
syncMetaData
Ensures that directory metadata, such as recent file renames, are moved to stable storage.- Throws:
IOException
- See Also:
-
rename
Renamessource
file todest
file wheredest
must not already exist in the directory.It is permitted for this operation to not be truly atomic, for example both
source
anddest
can be visible temporarily inlistAll()
. However, the implementation of this method must ensure the content ofdest
appears as the entiresource
atomically. So oncedest
is visible for readers, the entire content of previoussource
is visible.This method is used by IndexWriter to publish commits.
- Throws:
IOException
-
openInput
Opens a stream for reading an existing file.This method must throw either
NoSuchFileException
orFileNotFoundException
ifname
points to a non-existing file.- Parameters:
name
- the name of an existing file.- Throws:
IOException
- in case of I/O error
-
openChecksumInput
Opens a checksum-computing stream for reading an existing file.This method must throw either
NoSuchFileException
orFileNotFoundException
ifname
points to a non-existing file.- Parameters:
name
- the name of an existing file.- Throws:
IOException
- in case of I/O error
-
obtainLock
Acquires and returns aLock
for a file with the given name.- Parameters:
name
- the name of the lock file- Throws:
LockObtainFailedException
- (optional specific exception) if the lock could not be obtained because it is currently held elsewhere.IOException
- if any i/o error occurs attempting to gain the lock
-
close
Closes the directory.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-
copyFrom
Copies an existingsrc
file from directoryfrom
to a non-existent filedest
in this directory.- Throws:
IOException
-
toString
-
ensureOpen
Ensures this directory is still open.- Throws:
AlreadyClosedException
- if this directory is closed.
-
getPendingDeletions
Returns a set of files currently pending deletion in this directory.- Throws:
IOException
- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
-
getTempFileName
Creates a file name for a temporary file. The name will start withprefix
, end withsuffix
and have a reserved file extension.tmp
.
-