一种生成扫描目录树的方法及装置 【技术领域】
本发明涉及安全防护技术, 尤其涉及一种生成扫描目录树的方法及装置。背景技术
目前, 在安全防护软件中, 自定义扫描目录树一般采用普通目录树和二重目录树的形式。 其中, 普通目录树的结构如图 1 所示, 每次打开目录树时, 需要重新选择扫描路 径, 不仅增加了用户操作成本, 而且用户也不能查看历史扫描记录。
二重目录树的结构如图 2 所示, 该目录树虽然提供了历史选择路径的备份功能, 但是, 在第二次打开目录树时, 不仅目录树的界面展现不直观, 而且需要进行重新选取目录 的操作, 增加了用户操作成本。
发明内容
有鉴于此, 本发明的主要目的在于提供一种生成扫描目录树的方法及装置, 以解 决现有目录树在扫描时用户操作成本高的问题。
为达到上述目的, 本发明的技术方案是这样实现的 :
本发明提供了一种生成扫描目录树的方法, 所述方法包括 :
获取已保存的目录路径信息 ;
将所获取的目录路径信息映射到当前生成的扫描目录树上, 标识所述扫描目录树 节点的状态。
在上述方案中, 在获取已保存的目录路径信息之前, 所述方法还包括 : 在上次生成 扫描目录树时, 缓存所生成扫描目录树的目录路径信息 ; 并对所缓存的目录路径信息进行 去重后保存。
在上述方案中, 对所缓存的目录路径信息进行去重, 包括 : 遍历所缓存的目录路径 信息, 查找所述目录路径信息中路径最短的各目录, 采用字符串匹配算法查询所述各目录 下子目录的目录路径信息, 并删除。
在上述方案中, 所述将所获取的目录路径信息映射到当前生成的扫描目录树上, 标识所述扫描目录树节点的状态, 包括 : 将所获取的目录路径信息映射到当前生成的扫描 目录树上, 将所述当前生成的扫描目录树上的、 与所述目录路径信息匹配的目录路径上各 目录标识为选中状态。
在上述方案中, 所述标识所述扫描目录树上节点的状态, 还包括 : 所述当前生成的 扫描目录上父目录的所有子目录均处于选中状态时, 将所述父目录标识为选中状态。
在上述方案中, 所述标识所述扫描目录树上节点的状态, 还包括 : 所述当前生成的 扫描目录上父目录的部分子目录处于选中状态时, 将所述父目录标识为半选状态。
本发明还提供了一种生成扫描目录树的装置, 所述装置包括存储单元、 获取单元 和标识单元, 其中,存储单元, 用于保存上次生成扫描目录树时的目录路径信息 ;
获取单元, 用于获取所述存储单元已保存的目录路径信息 ;
标识单元, 用于将所述获取单元获取的目录路径信息映射到当前生成的扫描目录 树上, 标识所述扫描目录树节点的状态。
在上述方案中, 所述装置还包括缓存单元和存储单元, 其中,
缓存单元, 在生成扫描目录树时, 缓存所述扫描目录树的目录路径信息 ;
去重单元, 用于对所述缓存单元所缓存的目录路径信息进行去重后保存到所述存 储单元。
在上述方案中, 所述去重单元, 具体用于, 遍历所述缓存单元缓存的目录路径信 息, 查找所述目录路径信息中路径最短的各目录, 采用字符串匹配算法查询所述各目录下 子目录的目录路径信息并删除, 并将剩余的目录路径信息保存到所述存储单元。
在上述方案中, 所述标识单元, 具体用于, 将所述获取单元获取的目录路径信息映 射到当前生成的扫描目录树上, 将所述当前生成的扫描目录树上的、 与所述目录路径信息 匹配的目录路径上各目录标识为选中状态。
在上述方案中, 所述标识单元, 还用于在所述当前生成的扫描目录上父目录的所 有子目录均处于选中状态时, 将所述父目录标识为选中状态。 在上述方案中, 所述标识单元, 还用于在所述当前生成的扫描目录上父目录的部 分子目录处于选中状态时, 将所述父目录标识为半选状态。
本发明所提供的生成扫描目录树的方法及装置, 在上次生成扫描目录树时保存目 录路径信息, 之后, 通过获取保存的目录路径信息, 在当前生成的扫描目录树上标识节点状 态, 提供了目录树的动态记忆功能, 不需要用户重新选择目录, 大大减少了用户操作成本, 使得最终显示的目录树界面更加直观, 增强了用户体验。
附图说明
图 1 为普通目录树的结构示意图 ; 图 2 为二重目录树的结构示意图 ; 图 3 为本发明生成扫描目录树的方法的实现流程图 ; 图 4 为本发明生成扫描目录树的装置的组成结构示意图 ; 图 5 为本发明一种实施例的实现过程示意图 ; 图 6 为本发明一种实施例中去重处理过程的流程示意图 ; 图 7 为保存目录路径信息的目录信息历史文件的一种实例示意图 ; 图 8 为本发明一种实施例中标识扫描目录树中节点状态的流程示意图 ; 图 9 为本发明生成的扫描目录树的一种实例示意图。具体实施方式
本发明的基本思想是 : 利用文件读写原理, 结合动态解析和去重策略, 保存之前扫 描时的目录信息, 再次生成扫描目录树时, 通过读取历史目录信息, 利用动态匹配策略, 映 射到所述扫描目录树中, 标识目录状态。
本发明的生成扫描目录树的方法, 参照图 3 所示, 主要包括 :步骤 301 : 获取已保存的目录路径信息 ;
步骤 302 : 将所获取的目录路径信息映射到当前生成的扫描目录树上, 标识所述 扫描目录树节点的状态。
具体地, 在步骤 301 之前, 所述方法还包括 : 在上次生成扫描目录树时, 缓存所生 成扫描目录树的目录路径信息 ; 并对所缓存的目录路径信息进行去重后保存。
具体地, 对所缓存的目录路径信息进行去重的过程包括 : 遍历所缓存的目录路径 信息, 查找所述目录路径信息中路径最短的各目录, 采用字符串匹配算法查询所述各目录 下子目录的目录路径信息, 并删除。
其中, 将所获取的目录路径信息映射到当前生成的扫描目录树上, 标识所述扫描 目录树节点的状态, 可以包括 : 将所获取的目录路径信息映射到当前生成的扫描目录树上, 将所述当前生成的扫描目录树上的、 与所述目录路径信息匹配的目录路径上各目录标识为 选中状态。
这里, 标识所述扫描目录树节点的状态, 还可以包括 : 所述当前生成的扫描目录上 父目录的所有子目录均处于选中状态时, 将所述父目录标识为选中状态。
这里, 标识所述扫描目录树节点的状态, 还可以包括 : 所述当前生成的扫描目录上 父目录的部分子目录处于选中状态时, 将所述父目录标识为半选状态。
相应地, 本发明还提供了一种生成扫描目录树的装置, 如图 4 所示, 所述装置主要 包括 : 获取单元和标识单元, 其中, 存储单元, 用于保存上次生成扫描目录树时的目录路径 信息 ; 获取单元, 用于获取所述存储单元已保存的目录路径信息 ; 标识单元, 用于将所述获 取单元获取的目录路径信息映射到当前生成的扫描目录树上, 标识所述扫描目录树节点的 状态。
其中, 所述装置还可以包括 : 缓存单元和去重单元, 其中, 缓存单元用于在生成扫 描目录树时缓存所述扫描目录树的目录路径信息 ; 去重单元, 用于对所述缓存单元所缓存 的目录路径信息进行去重后保存到所述存储单元。
具体地, 所述去重单元具体用于, 遍历所述缓存单元缓存的目录路径信息, 查找所 述目录路径信息中路径最短的各目录, 采用字符串匹配算法查询所述各目录下子目录的目 录路径信息并删除, 并将剩余的目录路径信息保存到所述存储单元。
所述标识单元, 具体用于, 将所述获取单元获取的目录路径信息映射到当前生成 的扫描目录树上, 将所述当前生成的扫描目录树上的、 与所述目录路径信息匹配的目录路 径上各目录标识为选中状态。
这里, 所述标识单元, 还可以用于在所述当前生成的扫描目录上父目录的所有子 目录均处于选中状态时, 将所述父目录标识为选中状态。
这里, 所述标识单元, 还可以用于在所述当前生成的扫描目录上父目录的部分子 目录处于选中状态时, 将所述父目录标识为半选状态。
实施例一
本实施例中, 生成扫描目录树的过程, 如图 5 所示, 具体流程如下 :
步骤 1 : 动态遍历上次生成的扫描目录树, 得到上次所生成扫描目录树的目录路 径信息, 并缓存所得到的目录路径信息 ;
步骤 3 : 对所缓存的目录路径信息进行去重后, 得到有效的目录路径信息 ;步骤 4 : 将所得到有效的目录路径信息保存到目录信息历史文件中 ;
步骤 5 : 生成当前的扫描目录树, 读取所述目录信息历史文件, 获取其中保存的目 录路径信息 ;
步骤 6 : 将所获取的目录路径信息映射到当前所生成的扫描目录树, 进行动态匹 配;
步骤 7 : 标识当前生成的扫描目录树中与所述目录路径信息匹配的目录路径上的 节点 ;
步骤 8 : 将当前生成的扫描目录树展开, 显示所述扫描目录树。
具体地, 步骤 3 中对所缓存的目录路径信息进行去重后, 得到有效的目录路径信 息的过程, 参照图 6 所示, 具体流程如下 :
步骤 601 : 去重单元获取缓存单元中缓存的目录路径信息 ;
步骤 602 : 采用短路径优先策略遍历所获取的目录路径信息, 查找所述目录路径 信息中路径最短的各目录 ;
步骤 603 : 验证所查找到各目录中是否有目录存在子目录, 如果是, 继续步骤 604, 否则, 继续步骤 606 ; 步骤 604 ~ 605 : 采用字符串匹配算法遍历得到所述目录下子目录的目录路径信 息, 删除遍历得到的目录路径信息, 并返回步骤 603 ;
步骤 606 : 保存所查找到的、 路径最短的各目录 ;
步骤 607 : 将剩余的目录路径信息作为有效的目录路径信息保存, 完成目录路径 信息的去重处理。
经过去重处理后, 将有效的目录路径信息保存为目录信息历史文件, 图 7 为一种 目录信息历史文件的实例。
其中, 获取目录路径信息, 将所获取的目录路径信息映射到当前所生成的扫描目 录树, 并标识节点的过程, 参照图 8 所示, 具体流程如下 :
步骤 801 : 读取目录信息历史文件, 获取已保存的目录路径信息 ;
步骤 802 : 通过动态匹配策略, 将所获取的目录路径信息映射到当前生成的扫描 目录树上, 验证当前生成的扫描目录树上是否存在与所述目录路径信息匹配的目录路径, 如果存在, 则继续步骤 803 ; 否则, 直接进入步骤 808 ;
这里, 动态匹配策略具体为 : 建立目录文件和目录树之间的动态映射, 在目录文件 中的目录路径信息发生修改时, 通过将目录路径信息和目录树上的目录路径进行字符串比 较, 实时更新目录树上的目录状态信息。
步骤 803 : 将当前生成的扫描目录树的、 与所述目录路径信息匹配的目录路径上 各节点标识为选中状态 ;
步骤 804 : 验证当前生成的扫描目录树上各父目录的状态, 如果所有父目录均处 于选中状态, 则直接接入步骤 808 ; 如果有父目录未处于选中状态, 则继续步骤 805 ;
步骤 805 ~ 807 : 验证当前生成的扫描目录树上各父目录下所有子目录的状态, 如 果所有子目录均处于选中状态, 则继续步骤 806, 将所述父目录标识为选中状态 ; 如果部分 子目录处于选中状态, 则继续步骤 807, 将所述父目录标识为半选状态, 否则, 直接进入步骤 808 ;
步骤 808 : 显示当前生成的扫描目录树、 以及该扫描目录树上各节点的状态。 例如, 最终显示的扫描目录树可以如图 9 所示, 其中, 部分父目录处于选中状态。 以上所述, 仅为本发明的较佳实施例而已, 并非用于限定本发明的保护范围。