public abstract class Directory
extends java.lang.Object
implements java.io.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,
java.lang.String src,
java.lang.String dest,
IOContext context)
Copies an existing
src file from directory from
to a non-existent file dest in this directory. |
abstract IndexOutput |
createOutput(java.lang.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(java.lang.String prefix,
java.lang.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(java.lang.String name)
Removes an existing file in the directory.
|
protected void |
ensureOpen()
Ensures this directory is still open.
|
abstract long |
fileLength(java.lang.String name)
Returns the byte length of a file in the directory.
|
java.util.Set<java.lang.String> |
getPendingDeletions()
Returns a set of files currently pending deletion in this directory.
|
abstract java.lang.String[] |
listAll()
Returns names of all files stored in this directory.
|
abstract Lock |
obtainLock(java.lang.String name)
Acquires and returns a
Lock for a file with the given name. |
ChecksumIndexInput |
openChecksumInput(java.lang.String name,
IOContext context)
Opens a checksum-computing stream for reading an existing file.
|
abstract IndexInput |
openInput(java.lang.String name,
IOContext context)
Opens a stream for reading an existing file.
|
abstract void |
rename(java.lang.String source,
java.lang.String dest)
Renames
source file to dest file where
dest must not already exist in the directory. |
abstract void |
sync(java.util.Collection<java.lang.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.
|
java.lang.String |
toString() |
public abstract java.lang.String[] listAll() throws java.io.IOException
String.compareTo(java.lang.String)
) order.java.io.IOException
- in case of I/O errorpublic abstract void deleteFile(java.lang.String name) throws java.io.IOException
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.name
- the name of an existing file.java.io.IOException
- in case of I/O errorpublic abstract long fileLength(java.lang.String name) throws java.io.IOException
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.name
- the name of an existing file.java.io.IOException
- in case of I/O errorpublic abstract IndexOutput createOutput(java.lang.String name, IOContext context) throws java.io.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.java.io.IOException
- in case of I/O errorpublic abstract IndexOutput createTempOutput(java.lang.String prefix, java.lang.String suffix, IOContext context) throws java.io.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
.java.io.IOException
public abstract void sync(java.util.Collection<java.lang.String> names) throws java.io.IOException
java.io.IOException
syncMetaData()
public abstract void syncMetaData() throws java.io.IOException
java.io.IOException
sync(Collection)
public abstract void rename(java.lang.String source, java.lang.String dest) throws java.io.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.java.io.IOException
public abstract IndexInput openInput(java.lang.String name, IOContext context) throws java.io.IOException
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.name
- the name of an existing file.java.io.IOException
- in case of I/O errorpublic ChecksumIndexInput openChecksumInput(java.lang.String name, IOContext context) throws java.io.IOException
NoSuchFileException
or FileNotFoundException
if name
points to a non-existing file.name
- the name of an existing file.java.io.IOException
- in case of I/O errorpublic abstract Lock obtainLock(java.lang.String name) throws java.io.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.java.io.IOException
- if any i/o error occurs attempting to gain the lockpublic abstract void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
java.io.IOException
public void copyFrom(Directory from, java.lang.String src, java.lang.String dest, IOContext context) throws java.io.IOException
src
file from directory from
to a non-existent file dest
in this directory.java.io.IOException
public java.lang.String toString()
toString
in class java.lang.Object
protected void ensureOpen() throws AlreadyClosedException
AlreadyClosedException
- if this directory is closed.public java.util.Set<java.lang.String> getPendingDeletions() throws java.io.IOException
java.io.IOException
Copyright © 2000–2019 The Apache Software Foundation. All rights reserved.