#ifndef __LUCENE_STORE_DIRECTORY__ #define __LUCENE_STORE_DIRECTORY__ #include #include "LCIndexInput.h" #include "LCIndexOutput.h" /** A Directory is a flat list of files. Files may be written once, when they * are created. Once a file is created it may only be opened for read, or * deleted. Random access is permitted both when reading and writing. * *

Java's i/o APIs not used directly, but rather all i/o is * through this API. This permits things such as:

* * @author Doug Cutting */ @protocol LCDirectory /** Returns an array of strings, one for each file in the directory. */ - (NSArray *) fileList; /** Returns true iff a file with the given name exists. */ - (BOOL) fileExists: (NSString *) absolutePath; /** Returns the time the named file was last modified. */ - (NSTimeInterval) fileModified: (NSString *) absolutePath; /** Set the modified time of an existing file to now. */ - (void) touchFile: (NSString *) absolutePath; /** Removes an existing file in the directory. */ - (BOOL) deleteFile: (NSString *) absolutePath; /** Renames an existing file in the directory. If a file already exists with the new name, then it is replaced. This replacement should be atomic. */ - (void) renameFile: (NSString *) oldPath to: (NSString *) newPath; /** Returns the length of a file in the directory. */ - (unsigned long long) fileLength: (NSString *) absolutePath; /** Creates a new, empty file in the directory with the given name. Returns a stream writing this file. */ - (LCIndexOutput *) createOutput: (NSString *) name; /** Returns a stream reading an existing file. */ - (LCIndexInput *) openInput: (NSString *) name; #if 0 // FIXME: don't know how to do that /** Construct a {@link Lock}. * @param name the name of the lock file */ - (LCLock *) makeLick: (NSString *) absolutePath; #endif /** Closes the store. */ - (void) close; @end #endif /* __LUCENE_STORE_DIRECTORY__ */