public abstract class Directory extends Object implements Closeable
Java's i/o APIs not used directly, but rather all i/o is through this API. This permits things such as:
LockFactory
.Constructor and Description |
---|
Directory() |
Modifier and Type | Method and Description |
---|---|
abstract void |
close()
Closes the store.
|
void |
copyFrom(Directory from,
String src,
String dest,
IOContext context)
Copies the file src in from to this directory under the new
file name dest.
|
abstract IndexOutput |
createOutput(String name,
IOContext context)
Creates a new, empty file in the directory with the given name.
|
abstract IndexOutput |
createTempOutput(String prefix,
String suffix,
IOContext context)
Creates a new, empty file for writing in the directory, with a
temporary file name including prefix and suffix, ending with the
reserved extension
.tmp . |
abstract void |
deleteFile(String name)
Removes an existing file in the directory.
|
protected void |
ensureOpen() |
abstract long |
fileLength(String name)
Returns the length of a file in the directory.
|
abstract String[] |
listAll()
Returns an array of strings, one for each entry in the directory, in sorted (UTF16, java's String.compare) order.
|
abstract Lock |
obtainLock(String name)
Returns an obtained
Lock . |
ChecksumIndexInput |
openChecksumInput(String name,
IOContext context)
Returns a stream reading an existing file, computing checksum as it reads
|
abstract IndexInput |
openInput(String name,
IOContext context)
Returns a stream reading an existing file.
|
abstract void |
renameFile(String source,
String dest)
Renames
source to dest as an atomic operation,
where dest does not yet exist in the directory. |
abstract void |
sync(Collection<String> names)
Ensure that any writes to these files are moved to
stable storage.
|
String |
toString() |
public abstract String[] listAll() throws IOException
IOException
- in case of IO errorpublic abstract void deleteFile(String name) throws IOException
IOException
public abstract long fileLength(String name) throws IOException
FileNotFoundException
or NoSuchFileException
if the file does not exist.
name
- the name of the file for which to return the length.IOException
- if there was an IO error while retrieving the file's
length.public abstract IndexOutput createOutput(String name, IOContext context) throws IOException
IOException
public abstract IndexOutput createTempOutput(String prefix, String suffix, IOContext context) throws IOException
.tmp
. Use
IndexOutput.getName()
to see what name was used.IOException
public abstract void sync(Collection<String> names) throws IOException
IOException
public abstract void renameFile(String source, String dest) throws IOException
source
to dest
as an atomic operation,
where dest
does not yet exist in the directory.
Notes: This method is used by IndexWriter to publish commits.
It is ok if this operation is not truly atomic, for example
both source
and dest
can be visible temporarily.
It is just important that the contents of dest
appear
atomically, or an exception is thrown.
IOException
public abstract IndexInput openInput(String name, IOContext context) throws IOException
Throws FileNotFoundException
or NoSuchFileException
if the file does not exist.
IOException
public ChecksumIndexInput openChecksumInput(String name, IOContext context) throws IOException
IOException
public abstract Lock obtainLock(String name) throws IOException
Lock
.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
If you want to copy the entire source directory to the destination one, you can do so like this:
Directory to; // the directory to copy to for (String file : dir.listAll()) { to.copyFrom(dir, file, newFile, IOContext.DEFAULT); // newFile can be either file, or a new name }
NOTE: this method does not check whether dest exist and will overwrite it if it does.
IOException
protected void ensureOpen() throws AlreadyClosedException
AlreadyClosedException
- if this Directory is closedCopyright © 2000-2016 Apache Software Foundation. All Rights Reserved.