Class Directory

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    BaseDirectory, FilterDirectory, NRTCachingDirectory

    public abstract class Directory
    extends java.lang.Object
    implements java.io.Closeable
    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:

    • implementation of RAM-based indices;
    • implementation indices stored in a database, via JDBC;
    • implementation of an index as a single file;
    Directory locking is implemented by an instance of LockFactory, and can be changed for each Directory instance using setLockFactory(org.apache.lucene.store.LockFactory).
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      class  Directory.IndexInputSlicer
      Allows to create one or more sliced IndexInput instances from a single file handle.
    • Constructor Summary

      Constructors 
      Constructor Description
      Directory()  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract void clearLock​(java.lang.String name)
      Attempt to clear (forcefully unlock and remove) the specified lock.
      abstract void close()
      Closes the store.
      void copy​(Directory to, java.lang.String src, java.lang.String dest, IOContext context)
      Copies the file src to Directory to under the new file name dest.
      abstract IndexOutput createOutput​(java.lang.String name, IOContext context)
      Creates a new, empty file in the directory with the given name.
      Directory.IndexInputSlicer createSlicer​(java.lang.String name, IOContext context)
      Creates an Directory.IndexInputSlicer for the given file name.
      abstract void deleteFile​(java.lang.String name)
      Removes an existing file in the directory.
      abstract boolean fileExists​(java.lang.String name)
      Returns true iff a file with the given name exists.
      abstract long fileLength​(java.lang.String name)
      Returns the length of a file in the directory.
      abstract LockFactory getLockFactory()
      Get the LockFactory that this Directory instance is using for its locking implementation.
      java.lang.String getLockID()
      Return a string identifier that uniquely differentiates this Directory instance from other Directory instances.
      abstract java.lang.String[] listAll()
      Returns an array of strings, one for each file in the directory.
      abstract Lock makeLock​(java.lang.String name)
      Construct a Lock.
      abstract IndexInput openInput​(java.lang.String name, IOContext context)
      Returns a stream reading an existing file, with the specified read buffer size.
      abstract void setLockFactory​(LockFactory lockFactory)
      Set the LockFactory that this Directory instance should use for its locking implementation.
      abstract void sync​(java.util.Collection<java.lang.String> names)
      Ensure that any writes to these files are moved to stable storage.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Directory

        public Directory()
    • Method Detail

      • listAll

        public abstract java.lang.String[] listAll()
                                            throws java.io.IOException
        Returns an array of strings, one for each file in the directory.
        Throws:
        NoSuchDirectoryException - if the directory is not prepared for any write operations (such as createOutput(String, IOContext)).
        java.io.IOException - in case of other IO errors
      • fileExists

        public abstract boolean fileExists​(java.lang.String name)
                                    throws java.io.IOException
        Returns true iff a file with the given name exists.
        Throws:
        java.io.IOException
      • deleteFile

        public abstract void deleteFile​(java.lang.String name)
                                 throws java.io.IOException
        Removes an existing file in the directory.
        Throws:
        java.io.IOException
      • fileLength

        public abstract long fileLength​(java.lang.String name)
                                 throws java.io.IOException
        Returns the length of a file in the directory. This method follows the following contract:
        • Must throw FileNotFoundException if the file does not exist (not java.nio.file.NoSuchFileException of Java 7).
        • Returns a value ≥0 if the file exists, which specifies its length.
        Parameters:
        name - the name of the file for which to return the length.
        Throws:
        java.io.IOException - if there was an IO error while retrieving the file's length.
      • createOutput

        public abstract IndexOutput createOutput​(java.lang.String name,
                                                 IOContext context)
                                          throws java.io.IOException
        Creates a new, empty file in the directory with the given name. Returns a stream writing this file.
        Throws:
        java.io.IOException
      • sync

        public abstract void sync​(java.util.Collection<java.lang.String> names)
                           throws java.io.IOException
        Ensure that any writes to these files are moved to stable storage. Lucene uses this to properly commit changes to the index, to prevent a machine/OS crash from corrupting the index.

        NOTE: Clients may call this method for same files over and over again, so some impls might optimize for that. For other impls the operation can be a noop, for various reasons.
        Throws:
        java.io.IOException
      • openInput

        public abstract IndexInput openInput​(java.lang.String name,
                                             IOContext context)
                                      throws java.io.IOException
        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 FSDirectory and CompoundFileDirectory.
      • Must throw FileNotFoundException if the file does not exist (not java.nio.file.NoSuchFileException of Java 7).
Throws:
java.io.IOException
Throws:
java.io.IOException - if an IOException occurs