public abstract class Directory extends Object implements Closeable
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:
createOutput(java.lang.String, org.apache.lucene.store.IOContext)
), appended
to, then closed.IndexOutput
is closed.openInput(java.lang.String, org.apache.lucene.store.IOContext)
), or
deleted (deleteFile(java.lang.String)
). Calling createOutput(java.lang.String, org.apache.lucene.store.IOContext)
on an existing file
must throw FileAlreadyExistsException
.FSDirectory
,
RAMDirectory
,
FilterDirectory
Constructor and Description |
---|
Directory() |
Modifier and Type | Method and Description |
---|---|
abstract void |
close()
Closes the directory.
|
void |
copyFrom(Directory from,
String src,
String dest,
IOContext context)
Copies an existing
src file from directory from
to a non-existent file dest in this directory. |
abstract IndexOutput |
createOutput(String name,
IOContext context)
Creates a new, empty file in the directory and returns an
IndexOutput
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 an
IndexOutput
instance for appending data to this file. |
abstract void |
deleteFile(String name)
Removes an existing file in the directory.
|
protected void |
ensureOpen()
Ensures this directory is still open.
|
abstract long |
fileLength(String name)
Returns the byte length of a file in the directory.
|
abstract Set<String> |
getPendingDeletions()
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 a
Lock for a file with the given name. |
ChecksumIndexInput |
openChecksumInput(String name,
IOContext context)
Opens a checksum-computing stream for reading an existing file.
|
abstract IndexInput |
openInput(String name,
IOContext context)
Opens a stream for reading an existing file.
|
abstract void |
rename(String source,
String dest)
Renames
source file to dest file where
dest 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 |
syncMetaData()
Ensures that directory metadata, such as recent file renames, are moved to stable
storage.
|
String |
toString() |
public abstract String[] listAll() throws IOException
String.compareTo(java.lang.String)
) order.IOException
- in case of I/O errorpublic abstract void deleteFile(String name) throws IOException
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.name
- the name of an existing file.IOException
- in case of I/O errorpublic abstract long fileLength(String name) throws IOException
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.name
- the name of an existing file.IOException
- in case of I/O errorpublic abstract IndexOutput createOutput(String name, IOContext context) throws IOException
IndexOutput
instance for appending data to this file.
This method must throw FileAlreadyExistsException
if the file
already exists.name
- the name of the file to create.IOException
- in case of I/O errorpublic abstract IndexOutput createTempOutput(String prefix, String suffix, IOContext context) throws IOException
IndexOutput
instance for appending data to this file.
The temporary file name (accessible via IndexOutput.getName()
) will start with
prefix
, end with suffix
and have a reserved file extension .tmp
.IOException
public abstract void sync(Collection<String> names) throws IOException
IOException
syncMetaData()
public abstract void syncMetaData() throws IOException
IOException
sync(Collection)
public abstract void rename(String source, String dest) throws IOException
source
file to dest
file where
dest
must not already exist in the directory.
It is permitted for this operation to not be truly atomic, for example
both source
and dest
can be visible temporarily in listAll()
.
However, the implementation of this method must ensure the content of
dest
appears as the entire source
atomically. So once
dest
is visible for readers, the entire content of previous source
is visible.
This method is used by IndexWriter to publish commits.IOException
public abstract IndexInput openInput(String name, IOContext context) throws IOException
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.name
- the name of an existing file.IOException
- in case of I/O errorpublic ChecksumIndexInput openChecksumInput(String name, IOContext context) throws IOException
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.name
- the name of an existing file.IOException
- in case of I/O errorpublic abstract Lock obtainLock(String name) throws IOException
Lock
for a file with the given name.name
- the name of the lock fileLockObtainFailedException
- (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 lockpublic abstract void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
IOException
public void copyFrom(Directory from, String src, String dest, IOContext context) throws IOException
src
file from directory from
to a non-existent file dest
in this directory.IOException
protected void ensureOpen() throws AlreadyClosedException
AlreadyClosedException
- if this directory is closed.public abstract Set<String> getPendingDeletions() throws IOException
IOException
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.