Exemplo n.º 1
0
        /// <summary>
        /// 新建笔记页对象。
        /// knowledgeBase是目标知识库
        /// </summary>
        /// <param name="knowledgeBase"></param>
        /// <param name="noteName"></param>
        /// <returns></returns>
        public static Note newNote(KnowledgeBase knowledgeBase, String noteName)
        {
            // 若knowledgeBase有效则新建笔记页对象
            if (null != knowledgeBase)
            {
                Note note = new Note(noteName, knowledgeBase.getRecordLocation());

                // 若目标知识库中不存在同名的笔记页对象,则添加
                String path = note.getRecordLocation();
                if (!knowledgeBase.existNote(path))
                {
                    creatFile(path);
                    knowledgeBase.addNote(note);
                    return(note);
                }
                // 否则提示用户“已重名”
                else
                {
                    MessageBox.Show("已重名");
                    return(null);
                }
            }
            else
            {
                MessageBox.Show("请先选中知识库");
                return(null);
            }
        }
Exemplo n.º 2
0
        public static KonwledgeBaseManagement loadKnowledgeBaseManagement()
        {
            // 知识库管理器
            KonwledgeBaseManagement konwledgeBaseManagement;

            // 获得当前工作路径
            String path = getRecordLocation();

            // 如果存在持久化存储的知识库管理器实例,则加载
            if (File.Exists(getRecordLocation() + @"\KBM.xml"))
            {
                XMLTransformation xMLTransformation = new XMLTransformation();
                konwledgeBaseManagement = xMLTransformation.deserialization(path, "KBM");
            }
            // 若不存在,则新建知识库管理器实例
            else
            {
                konwledgeBaseManagement = new KonwledgeBaseManagement();

                // 在当前工作路径下新建知识库
                // 测试名?
                KnowledgeBase kb = new KnowledgeBase(getRecordLocation() + @"\默认知识库");

                // 在当前工作路径中,添加与新建的知识库对应的文件夹
                if (!Directory.Exists(kb.getRecordLocation()))
                {
                    Directory.CreateDirectory(kb.getRecordLocation());
                }

                // 新建笔记页
                // 测试代码?
                Note note1 = new Note("默认笔记", kb.getRecordLocation());

                // 在新建知识库路径中,创建与新建的笔记页对应的富文本文件
                // 若对应文件已存在,则将其删除以便新建
                if (!File.Exists(note1.getRecordLocation()))
                {
                    File.Delete(note1.getRecordLocation());
                }
                creatFile(note1.getRecordLocation());
                kb.addNote(note1);

                // 添加新建的知识库实例到当前知识库管理器中
                konwledgeBaseManagement.addKnowledgeBase(kb);
            }
            return(konwledgeBaseManagement);
        }
        /// <summary>
        /// 判断一个知识库对象(KnowledgeBase)是否已经存在于当前知识库列表(knowledgeBases)中
        /// </summary>
        /// <param name="knowledgeBase"></param>
        /// <returns></returns>
        public Boolean existKB(KnowledgeBase knowledgeBase)
        {
            String kbLocation = knowledgeBase.getRecordLocation();

            foreach (KnowledgeBase kb in knowledgeBases)
            {
                if (kb.getRecordLocation().Equals(kbLocation))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 导入笔记页到指定的知识库中。
        /// 切割部分另设方法
        /// </summary>
        /// <param name="fileNames"></param>
        /// <param name="konwledgeBaseManagement"></param>
        /// <param name="knowledgeBase"></param>
        private static void importNote(String[] fileNames, KonwledgeBaseManagement konwledgeBaseManagement, KnowledgeBase knowledgeBase)
        {
            // 不会用到的初始值?
            int index = fileNames[0].LastIndexOf(@"\") + 1;

            //
            for (int i = 0; i < fileNames.Length; i++)
            {
                // 判断将要添加的笔记页是否已存在于目标知识库中
                index = konwledgeBaseManagement.existNote(fileNames[i]);

                // 若不存在,尝试添加:
                if (-1 == index)
                {
                    // (以下应分割为单独的方法):

                    // 获取笔记页名
                    String name = fileNames[i].Substring(index, fileNames[i].Length - index);

                    //新建笔记页对象
                    Note note = new Note(name, knowledgeBase.getRecordLocation());

                    // 添加该笔记页到指定的知识库中
                    knowledgeBase.addNote(note);

                    // 若目标知识库对应文件夹中已存在同名文件,
                    // 询问用户的选择
                    if (File.Exists(note.getRecordLocation()))
                    {
                        int answer = (int)MessageBox.Show("知识库中已有名为" + note.getName() + "的文件,是否替换", "替换提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
                        if (6 == answer)//返回值 是6 否7 取消2
                        {
                            File.Delete(note.getRecordLocation());
                        }
                        else
                        {
                            continue;
                        }
                    }

                    // 若不存在,将该笔记页文件复制到目标知识库对应的文件夹中
                    File.Copy(fileNames[i], note.getRecordLocation());//另存
                }
                else
                {
                    MessageBox.Show("该笔记已经在" + konwledgeBaseManagement.getKB(index).getName() + "存在");
                }
            } // for循环的结束
        }
Exemplo n.º 5
0
        /// <summary>
        /// 初始化指定路径为知识库,并将其返回
        /// </summary>
        /// <param name="selectedPath"></param>
        /// <returns></returns>
        private static KnowledgeBase newKB(String selectedPath)
        {
            // 新建了一个知识库实例
            KnowledgeBase knowledgeBase = new KnowledgeBase(selectedPath);

            // 将该路径中所有符合格式(.rtf)的文件都添加到该知识库中作为笔记页
            DirectoryInfo TheFolder = new DirectoryInfo(selectedPath);

            foreach (FileInfo fi in TheFolder.GetFiles())
            {
                if (fi.Name.EndsWith(Note.getFormat()))
                {
                    Note note = new Note(fi.Name, knowledgeBase.getRecordLocation());
                    knowledgeBase.addNote(note);
                }
            }

            return(knowledgeBase);
        }