深入浅出 jackrabbit 九 索引合并(下)
2009-09-17 00:00:00 来源:WEB开发网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;
}
Tags:深入浅出 jackrabbit 索引
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接