Directory.java
01 package gate.creole.annic.apache.lucene.store;
02 
03 /**
04  * Copyright 2004 The Apache Software Foundation
05  *
06  * Licensed under the Apache License, Version 2.0 (the "License");
07  * you may not use this file except in compliance with the License.
08  * You may obtain a copy of the License at
09  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 import java.io.IOException;
20 
21 /** A Directory is a flat list of files.  Files may be written once, when they
22  * are created.  Once a file is created it may only be opened for read, or
23  * deleted.  Random access is permitted both when reading and writing.
24  *
25  <p> Java's i/o APIs not used directly, but rather all i/o is
26  * through this API.  This permits things such as: <ul>
27  <li> implementation of RAM-based indices;
28  <li> implementation of an index as a single file;
29  </ul>
30  *
31  @author Doug Cutting
32  */
33 public abstract class Directory {
34   /** Returns an array of strings, one for each file in the directory. */
35   public abstract String[] list()
36        throws IOException;
37 
38   /** Returns true iff a file with the given name exists. */
39   public abstract boolean fileExists(String name)
40        throws IOException;
41 
42   /** Returns the time the named file was last modified. */
43   public abstract long fileModified(String name)
44        throws IOException;
45 
46   /** Set the modified time of an existing file to now. */
47   public abstract void touchFile(String name)
48        throws IOException;
49 
50   /** Removes an existing file in the directory. */
51   public abstract void deleteFile(String name)
52        throws IOException;
53 
54   /** Renames an existing file in the directory.
55     If a file already exists with the new name, then it is replaced.
56     This replacement should be atomic. */
57   public abstract void renameFile(String from, String to)
58        throws IOException;
59 
60   /** Returns the length of a file in the directory. */
61   public abstract long fileLength(String name)
62        throws IOException;
63 
64   /** Creates a new, empty file in the directory with the given name.
65       Returns a stream writing this file. */
66   public abstract OutputStream createFile(String name)
67        throws IOException;
68 
69   /** Returns a stream reading an existing file. */
70   public abstract InputStream openFile(String name)
71        throws IOException;
72 
73   /** Construct a {@link Lock}.
74    @param name the name of the lock file
75    */
76   public abstract Lock makeLock(String name);
77 
78   /** Closes the store. */
79   public abstract void close()
80        throws IOException;
81 }