我正在为Lotus Notes / Domino使用Java-API。我需要将Lotus-Documents放置在auf Lotus-Folders(视图)中,这些文件的组织方式类似于文件系统中的文件夹。
要查找并可选地创建一个文件夹,我使用以下代码。路径字符串使用反斜杠分隔符(即“ TestFolder / SubFolder1 / SubSubFolder1”。)将按预期方式创建文件夹并将其显示在Notes客户端中。
View view = database.getView(path);
if (view == null) {
db.enableFolder(path);
view = db.getView(path);
}
如何找到特定文件夹的所有子文件夹?
现在,我正在使用此替代方法。恕我直言,这不是很好,因为我一直在读取所有目录。当结构变大时,这可能会对性能产生影响。
List<View> result = new ArrayList<View>();
String prefix = getPath() + getSeparator();
for (Object obj : database.getViews()) {
View view = (View)obj;
if (view.isFolder()) {
String path = view.getName();
if (path.startsWith(prefix)) {
String suffix = path.substring(prefix.length());
if (suffix.indexOf(getSeparator()) == -1) {
result.add(view);
}
}
}
}
不幸的是,没有真正快速的方法可以做到这一点。如果您确实需要性能,那么使其速度显着提高的唯一方法是使用NoteCollectionClass并获取所有文件夹。然后遍历代表文件夹的NotesDocuments,并阅读“ $ Title”项。这是执行此操作的示例代码:
NoteCollection nc = database.createNoteCollection(false);
nc.setSelectFolders(true);
nc.buildCollection();
String id = nc.getFirstNoteID();
while (id.length() > 0) {
String strFolderName = ""
Document docFolder = database.getDocumentByID(strFolderId);
strFolderName = docFolder.getItemValueString("$Title");
if (strFolderName.startsWith(prefix)) {
....
}
}
在我的测试中,这比使用getViews()-方法快了2-3倍。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句