Methods Summary |
---|
public void | clearLock(java.lang.String name)Attempt to clear (forcefully unlock and remove) the
specified lock. Only call this at a time when you are
certain this lock is no longer in use.
if (lockFactory != null) {
lockFactory.clearLock(name);
}
|
public abstract void | close()Closes the store.
|
public static void | copy(org.apache.lucene.store.Directory src, org.apache.lucene.store.Directory dest, boolean closeDirSrc)Copy contents of a directory src to a directory dest.
If a file in src already exists in dest then the
one in dest will be blindly overwritten.
final String[] files = src.list();
if (files == null)
throw new IOException("cannot read directory " + src + ": list() returned null");
byte[] buf = new byte[BufferedIndexOutput.BUFFER_SIZE];
for (int i = 0; i < files.length; i++) {
IndexOutput os = null;
IndexInput is = null;
try {
// create file in dest directory
os = dest.createOutput(files[i]);
// read current file
is = src.openInput(files[i]);
// and copy to dest directory
long len = is.length();
long readCount = 0;
while (readCount < len) {
int toRead = readCount + BufferedIndexOutput.BUFFER_SIZE > len ? (int)(len - readCount) : BufferedIndexOutput.BUFFER_SIZE;
is.readBytes(buf, 0, toRead);
os.writeBytes(buf, toRead);
readCount += toRead;
}
} finally {
// graceful cleanup
try {
if (os != null)
os.close();
} finally {
if (is != null)
is.close();
}
}
}
if(closeDirSrc)
src.close();
|
public abstract org.apache.lucene.store.IndexOutput | createOutput(java.lang.String name)Creates a new, empty file in the directory with the given name.
Returns a stream writing this file.
|
public abstract void | deleteFile(java.lang.String name)Removes an existing file in the directory.
|
public abstract boolean | fileExists(java.lang.String name)Returns true iff a file with the given name exists.
|
public abstract long | fileLength(java.lang.String name)Returns the length of a file in the directory.
|
public abstract long | fileModified(java.lang.String name)Returns the time the named file was last modified.
|
public org.apache.lucene.store.LockFactory | getLockFactory()Get the LockFactory that this Directory instance is
using for its locking implementation. Note that this
may be null for Directory implementations that provide
their own locking implementation.
return this.lockFactory;
|
public java.lang.String | getLockID()Return a string identifier that uniquely differentiates
this Directory instance from other Directory instances.
This ID should be the same if two Directory instances
(even in different JVMs and/or on different machines)
are considered "the same index". This is how locking
"scopes" to the right index.
return this.toString();
|
public abstract java.lang.String[] | list()Returns an array of strings, one for each file in the
directory. This method may return null (for example for
{@link FSDirectory} if the underlying directory doesn't
exist in the filesystem or there are permissions
problems).
|
public org.apache.lucene.store.Lock | makeLock(java.lang.String name)Construct a {@link Lock}.
return lockFactory.makeLock(name);
|
public org.apache.lucene.store.IndexInput | openInput(java.lang.String name, int bufferSize)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 are {@link FSDirectory} and {@link
org.apache.lucene.index.CompoundFileReader}.
return openInput(name);
|
public abstract org.apache.lucene.store.IndexInput | openInput(java.lang.String name)Returns a stream reading an existing file.
|
public abstract void | renameFile(java.lang.String from, java.lang.String to)Renames an existing file in the directory.
If a file already exists with the new name, then it is replaced.
This replacement is not guaranteed to be atomic.
|
public void | setLockFactory(org.apache.lucene.store.LockFactory lockFactory)Set the LockFactory that this Directory instance should
use for its locking implementation. Each * instance of
LockFactory should only be used for one directory (ie,
do not share a single instance across multiple
Directories).
this.lockFactory = lockFactory;
lockFactory.setLockPrefix(this.getLockID());
|
public abstract void | touchFile(java.lang.String name)Set the modified time of an existing file to now.
|