WEB开发网
开发学院软件开发Java 深入浅出 jackrabbit 九 索引合并(下) 阅读

深入浅出 jackrabbit 九 索引合并(下)

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: Java代码voidaddName(Stringname){if(names.contains(name)){thrownewIllegalArgumentException("alreadycontains:"+name);}indexes.add(name);names.

Java代码   

void addName(String name) { 
 
    if (names.contains(name)) { 
 
      throw new IllegalArgumentException("already contains: " + name); 
 
    } 
 
    indexes.add(name); 
 
    names.add(name); 
 
    dirty = true; 
 
  }

还是没有持久化的信息,ahuaxuan很焦虑,肾上腺激素含量开始升高,啥都别说了,接着看吧,1秒钟之后,终于发现这个方法:

Java代码   

void write(File dir) throws IOException { 
 
    // do not write if not dirty 
 
    if (!dirty) { 
 
/*目录没有变化,直接返回*/ 
 
      return; 
    } 
 
  /*有新的数据添加进来,需要持久化了,创建一个新文件indexs.new */ 
 
    File nu = new File(dir, name + ".new"); 
 
 
 
    OutputStream out = new FileOutputStream(nu); 
 
    try { 
 
      DataOutputStream dataOut = new DataOutputStream(out); 
 
/*前4个byte写入new segment names, 但是我没有看到这个变量再什么地方被使用*/ 
 
      dataOut.writeInt(counter); 
 
/*前5-8个byte写入目录总数*/ 
 
      dataOut.writeInt(indexes.size()); 
 
      for (int i = 0; i < indexes.size(); i++) { 
 
/*写入每个indexName*/ 
        dataOut.writeUTF(getName(i)); 
 
      } 
    } finally { 
      out.close(); 
    } 
 
    // delete old 
    File old = new File(dir, name); 
    if (old.exists() && !old.delete()) { 
      throw new IOException("Unable to delete file: " + old.getAbsolutePath()); 
    } 
 
/*删除索引目录中的indexs文件,并将indexs.new改名成indexs*/ 
    if (!nu.renameTo(old)) { 
      throw new IOException("Unable to rename file: " + nu.getAbsolutePath()); 
    } 
    dirty = false; 
 
  }

上一页  1 2 3 4 5 6  下一页

Tags:深入浅出 jackrabbit 索引

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接