/* * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; namespace Lucene.Net.Store { /// 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:

/// ///
/// Doug Cutting /// public abstract class Directory { /// Returns an array of strings, one for each file in the directory. public abstract System.String[] List(); /// Returns true iff a file with the given name exists. public abstract bool FileExists(System.String name); /// Returns the time the named file was last modified. public abstract long FileModified(System.String name); /// Set the modified time of an existing file to now. public abstract void TouchFile(System.String name); /// Removes an existing file in the directory. public abstract void DeleteFile(System.String name); /// 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. /// public abstract void RenameFile(System.String from, System.String to); /// Returns the length of a file in the directory. public abstract long FileLength(System.String name); /// use {@link #CreateOutput(String)} /// public virtual OutputStream CreateFile(System.String name) { return (OutputStream) CreateOutput(name); } /// Creates a new, empty file in the directory with the given name. /// Returns a stream writing this file. /// public virtual IndexOutput CreateOutput(System.String name) { // default implementation for back compatibility // this method should be abstract return (IndexOutput) CreateFile(name); } /// use {@link #OpenInput(String)} /// public virtual InputStream OpenFile(System.String name) { return (InputStream) OpenInput(name); } /// Returns a stream reading an existing file. public virtual IndexInput OpenInput(System.String name) { // default implementation for back compatibility // this method should be abstract return (IndexInput) OpenFile(name); } /// Construct a {@link Lock}. /// the name of the lock file /// public abstract Lock MakeLock(System.String name); /// Closes the store. public abstract void Close(); } }