<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    葉明的javablog

    java學習天堂,個人關于其他blog:blog.javaworker.cn,歡迎大家訪問
    posts - 64, comments - 50, trackbacks - 0, articles - 3

    首先我們看構造函數中的第一個類Directory 類。根據這個類的英文,我們能得出這個類就是關于目錄操作的。Directory 是一個抽象類。其有4個子類,分別是:DbDirectory, FSDirectory, JEDirectory, RAMDirectory

    首先我們看看Directory 的類
    public abstract class Directory {
    volatile boolean isOpen = true;
    /*** 持有一個LockFactory的實例(實現鎖定這個目錄實例)*/
    protected LockFactory lockFactory;
    /**返回該目錄下的所有文件數組.如果這個目錄下沒有文件存在,或者存在權限問題不能訪問,該方法可能返回Null*/
    public abstract String[] list() throws IOException;
    /** * 返回指定名稱的文件是不是存在 */
    public abstract boolean fileExists(String name)
    throws IOException;
    /**返回指定名稱的文件最后修改的時間
    public abstract long fileModified(String name) throws IOException;
    /**設置指定文件名的文件最后的修改時間為當前時間*/
    public abstract void touchFile(String name) throws IOException;

    /**刪除指定文件。 */
    public abstract void deleteFile(String name)throws IOException;
    /**返回指定文件的長度。 */
    public abstract long fileLength(String name) throws IOException;
    /** 在當前目錄下使用給定的名稱創建一個空的文件。并且返回一個流來寫該文件。*/
    public abstract IndexOutput createOutput(String name) throws IOException;
    /** * Lucene使用該方法確保所有的針對該文件的寫操作都會存儲到Index。并且阻止machine/OS發生故障 破壞該index。*/
    public void sync(String name) throws IOException {}
    /**獲取已經存在的一個文件的IndexInput流操作該文件。 */
    public abstract IndexInput openInput(String name) throws IOException;
    /** 返回已經存在的一個文件、并且使用指定大小的緩沖的IndexInput,但是當前目錄也可能忽略該緩沖池的大小,
    * 當前主要是考慮CompoundFileReader和FSDirectory對于次參數的需求。*/
    public IndexInput openInput(String name, int bufferSize) throws IOException {
    return openInput(name);
    }
    /** 創建一個指定名稱的鎖/
    public Lock makeLock(String name) {
    return lockFactory.makeLock(name);
    }
    /**
    * 清除指定的鎖定(強行解鎖和刪除)這不僅要求在這個時候當前的鎖一定不在使用。 */
    public void clearLock(String name) throws IOException {
    if (lockFactory != null) {
    lockFactory.clearLock(name);
    }
    }
    /** 結束這個store. */
    public abstract void close() throws IOException;

    /**設置LockFactory,此目錄實例應使其鎖定執行。每個LockFactory實例只用于一個目錄(即,不要共用一個實例在多個目錄) */
    public void setLockFactory(LockFactory lockFactory) {
    this.lockFactory = lockFactory;
    lockFactory.setLockPrefix(this.getLockID());
    }

    /** 獲得LockFactory,此目錄例實例使用其鎖定執行。請注意,這可能是無效的目錄執行,提供自己鎖執行*/
    public LockFactory getLockFactory() {
    return this.lockFactory;
    }
    /**過去鎖實例的唯一表示ID的字符串描述*/
    public String getLockID() {
    return this.toString();
    }
    /**// 拷貝源目錄src下的文件,復制到目的目錄dest下面,拷貝完成后關閉源目錄src*/
    public static void copy(Directory src, Directory dest, boolean closeDirSrc) throws IOException {
    final String[] files = src.list();
    if (files == null)
    throw new IOException("cannot read directory " + src + ": list() returned null");
    byte[] buf = new byte[BufferedIndexOutput.BUFFER_SIZE];
    for (int i = 0; i < files.length; i++) {
    IndexOutput os = null;
    IndexInput is = null;
    try {
    // create file in dest directory
    os = dest.createOutput(files[i]);
    // read current file
    is = src.openInput(files[i]);
    // and copy to dest directory
    long len = is.length();
    long readCount = 0;
    while (readCount < len) {
    int toRead = readCount + BufferedIndexOutput.BUFFER_SIZE > len ? (int)(len - readCount) : BufferedIndexOutput.BUFFER_SIZE;
    is.readBytes(buf, 0, toRead);
    os.writeBytes(buf, toRead);
    readCount += toRead;
    }
    } finally {
    // graceful cleanup
    try {
    if (os != null)
    os.close();
    } finally {
    if (is != null)
    is.close();
    }
    }
    }
    if(closeDirSrc)
    src.close();
    }

    從Directory抽象類的定義,我們可以得到如下幾點:
    1、管理鎖工廠及其鎖實例;
    2、管理Directory目錄實例的基本屬性,主要是通過文件名稱進行管理;
    3、管理與操作該目錄相關的一些流對象;
    4、管理索引文件的拷貝。

    主站蜘蛛池模板: 久久久久久久亚洲Av无码| 亚洲人成国产精品无码| 亚洲AV无码久久精品成人| 亚洲AV电影院在线观看| 亚洲成a人片7777| 老汉精品免费AV在线播放| 国产亚洲真人做受在线观看| 亚洲国产午夜精品理论片 | 久久亚洲精品成人无码网站 | 免费看片在线观看| 国产精品久久香蕉免费播放| 一本色道久久综合亚洲精品蜜桃冫| 一区二区免费电影| 国内精品99亚洲免费高清| 两个人看的www高清免费观看| 久久久久亚洲精品无码系列| 8090在线观看免费观看| 亚洲区日韩区无码区| 中文字幕免费在线播放| 啦啦啦中文在线观看电视剧免费版| 亚洲视频无码高清在线| 精品国产一区二区三区免费| 亚洲国产精品久久久久婷婷老年| 亚洲AV无码一区二区三区鸳鸯影院| 国产亚洲sss在线播放| 最近2019中文字幕免费看最新 | 国产日韩久久免费影院| 亚洲综合日韩中文字幕v在线| 美女被爆羞羞网站在免费观看| 亚洲午夜福利精品久久| 最近的2019免费中文字幕| 亚洲成年人电影网站| 永久久久免费浮力影院| 一级做受视频免费是看美女| 亚洲五月六月丁香激情| www成人免费视频| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久无码av亚洲精品色午夜 | 亚洲精品成人a在线观看| 性xxxx视频免费播放直播| 亚洲中文字幕久久精品无码喷水 |