—— 一、 Directory 之一
,第一个接触的类一般是Directory。它是Lucene存储的一个抽象,由此派生了两个类:FSDirectory和RAMDirectory,用于控制索引文件的存储位置。使用FSDirectory类,就是存储到硬盘;使用RAMDirectory类,则是存储到内存。
图1-1 存储抽象实现UML图
如图1-1,显示了这种关系。而看Lucene代码会发现,RAMDirectory和FSDirectory还分别有一个内嵌类。这个内嵌类实际上是通过工具从Java版本转移过来,工具自动产生的。那就先看看Java代码的结构,然后再来看转移过来生成的内嵌类是干什么用的。
Directory类一共有11个方法,看看类的注释就知道,翻译过来也是没有做非常细致的调整。比如,注释上有这句话“Java's i/o APIs not used directly, but rather all i/o is through this API. ”。还保留着Java的解释了,虽然没有人会认为在dotNet平台会采用Java的API,但是,这句话确实够昏的。Directory的注释原文:
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对象是一份文件的清单。文件可能只在被创建的时候写一次。一旦文件被创建,它将只被读取或者删除。在读取的时候进行写入操作是允许的。Java的I/O库没有被直接使用,所以的I/O操作都通过这个API。这些存储可以允许:
实现基于内存的索引;
实现索引存入数据库,通过JDBC;
实现一个索引是一个文件。
而Directory的11个方法分别是:
1、list 把一个Directory对象下的文件,按字符串数组的方式返回;
2、fileExists 给定一个文件名,如果存在,就返回true;
3、fileModified 返回给定文件名被修改的时间;
4、touchFile 设置给定文件名文件的更新时间为现在;
5、deleteFile 删除当前directory对象下一
跨域 解决方案 来自淘豆网m.daumloan.com转载请标明出处.