Directory.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:4k
源码类别:

搜索引擎

开发平台:

C#

  1. /*
  2.  * Copyright 2004 The Apache Software Foundation
  3.  * 
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  * 
  8.  * http://www.apache.org/licenses/LICENSE-2.0
  9.  * 
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16. using System;
  17. namespace Lucene.Net.Store
  18. {
  19. /// <summary>A Directory is a flat list of files.  Files may be written once, when they
  20. /// are created.  Once a file is created it may only be opened for read, or
  21. /// deleted.  Random access is permitted both when reading and writing.
  22. /// 
  23. /// <p> Java's i/o APIs not used directly, but rather all i/o is
  24. /// through this API.  This permits things such as: <ul>
  25. /// <li> implementation of RAM-based indices;
  26. /// <li> implementation indices stored in a database, via JDBC;
  27. /// <li> implementation of an index as a single file;
  28. /// </ul>
  29. /// 
  30. /// </summary>
  31. /// <author>  Doug Cutting
  32. /// </author>
  33. public abstract class Directory
  34. {
  35. /// <summary>Returns an array of strings, one for each file in the directory. </summary>
  36. public abstract System.String[] List();
  37. /// <summary>Returns true iff a file with the given name exists. </summary>
  38. public abstract bool FileExists(System.String name);
  39. /// <summary>Returns the time the named file was last modified. </summary>
  40. public abstract long FileModified(System.String name);
  41. /// <summary>Set the modified time of an existing file to now. </summary>
  42. public abstract void  TouchFile(System.String name);
  43. /// <summary>Removes an existing file in the directory. </summary>
  44. public abstract void  DeleteFile(System.String name);
  45. /// <summary>Renames an existing file in the directory.
  46. /// If a file already exists with the new name, then it is replaced.
  47. /// This replacement should be atomic. 
  48. /// </summary>
  49. public abstract void  RenameFile(System.String from, System.String to);
  50. /// <summary>Returns the length of a file in the directory. </summary>
  51. public abstract long FileLength(System.String name);
  52. /// <deprecated> use {@link #CreateOutput(String)} 
  53. /// </deprecated>
  54. public virtual OutputStream createFile(System.String name)
  55. {
  56. return (OutputStream) CreateOutput(name);
  57. }
  58. /// <summary>Creates a new, empty file in the directory with the given name.
  59. /// Returns a stream writing this file. 
  60. /// </summary>
  61. public virtual IndexOutput CreateOutput(System.String name)
  62. {
  63. // default implementation for back compatibility
  64. // this method should be abstract
  65. return (IndexOutput) createFile(name);
  66. }
  67. /// <deprecated> use {@link #OpenInput(String)} 
  68. /// </deprecated>
  69. public virtual InputStream OpenFile(System.String name)
  70. {
  71. return (InputStream) OpenInput(name);
  72. }
  73. /// <summary>Returns a stream reading an existing file. </summary>
  74. public virtual IndexInput OpenInput(System.String name)
  75. {
  76. // default implementation for back compatibility
  77. // this method should be abstract
  78. return (IndexInput) OpenFile(name);
  79. }
  80. /// <summary>Construct a {@link Lock}.</summary>
  81. /// <param name="name">the name of the lock file
  82. /// </param>
  83. public abstract Lock MakeLock(System.String name);
  84. /// <summary>Closes the store. </summary>
  85. public abstract void  Close();
  86. }
  87. }