一种具有目录忽略机制的文件遍历方法及系统技术方案

技术编号:33243054 阅读:64 留言:0更新日期:2022-04-27 17:48
本发明专利技术提供了一种具有目录忽略机制的文件遍历方法及系统,方法包括获取目标遍历目录中的元素,判断所述元素的类型;当所述元素为文件时,执行文件遍历业务;当所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。本发明专利技术通过对目标遍历目录中的元素类型进行区分,对于文件类型直接进行文件遍历业务,对于目录类型,在递归处理过程中仅比对路径字符串即可,改变了传统的递归方式,且由于本发明专利技术实施例中对忽略目录的匹配仅发生在遍历阶段递归调用时,不必对每一个被遍历到的文件进行路径匹配,对系统性能消耗极小,且大幅提高遍历效率。且大幅提高遍历效率。且大幅提高遍历效率。

【技术实现步骤摘要】
一种具有目录忽略机制的文件遍历方法及系统


[0001]本专利技术涉及文件遍历
,尤其是一种具有目录忽略机制的文件遍历方法及系统。

技术介绍

[0002]硬盘文件遍历,是对一类安全软件行为的统称。这种行为可能是:为了实现全局应用程序启动控制而进行的全盘文件哈希值计算,或者为了实现对全盘重要文件完整性进行监测而进行的全盘文件哈希值计算。这些行为的共同点是,需要对某个操作系统中整个硬盘或者部分目录下全部文件进行处理。在下文中,这一类的行为统称“文件遍历业务”。文件遍历业务是本专利技术的“服务对象”,但不是本专利技术的关注点。
[0003]这一遍历过程的耗时,可能会因系统硬件的配置落后等因素而变得十分冗长。同时,由于客户环境的因素,硬盘上可能存在一些不需要执行“文件遍历业务”的目录。因此,结合这两种情况,有必要在执行文件遍历时允许用户对遍历过程进行“指导”,从而允许一部分目录得以跳过遍历业务。这些目录称作忽略目录。
[0004]目前大多数的文件系统遍历过程使用的是递归迭代器,以std::filesystem::recursive_directory_iterator为代表,需要在迭代到每一个文件时对文件所处的目录与忽略目录进行比对,因此对目录的忽略将会是一种十分耗时的操作。

技术实现思路

[0005]本专利技术提供了一种具有目录忽略机制的文件遍历方法及系统,用于解决现有文件遍历过程耗时长的问题。
[0006]为实现上述目的,本专利技术采用下述技术方案:
[0007]本专利技术第一方面提供了一种具有目录忽略机制的文件遍历方法,所述方法包括以下步骤:
[0008]获取目标遍历目录中的元素,判断所述元素的类型;
[0009]当所述元素为文件时,执行文件遍历业务;
[0010]当所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。
[0011]进一步地,在所述步骤之前,还包括:
[0012]构建忽略目录,所述忽略目录中包括固定忽略目录和用户输入的自定义忽略目录。
[0013]进一步地,所述忽略目录的构建过程具体为:
[0014]获取固定忽略目录或自定义忽略目录对应的路径字符串;
[0015]判断当前操作系统的类型是否为Windows系统;
[0016]若是,则将所述路径字符串中的字母进行大小写归一化,将反斜杠替换为斜杠,若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;
[0017]若否,则判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。
[0018]进一步地,所述将当前目录的路径与预设忽略目录的路径进行匹配的具体过程为:
[0019]将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;
[0020]在该忽略目录中查找是否存在当前目录的路径字符串;
[0021]若不存在,则提取当前目录的中间子目录,重复上述两步的操作,至当前目录下的各子目录均与忽略目录匹配。
[0022]进一步地,所述目标遍历目录中的元素通过
[0023]std::filesystem::directory_iterator非递归迭代器获取。
[0024]本专利技术第二方面提供了一种具有目录忽略机制的文件遍历系统,所述系统包括:
[0025]元素分析单元,获取目标遍历目录中的元素,判断所述元素的类型;
[0026]文件遍历单元,在所述元素为文件时,执行文件遍历业务;
[0027]目录遍历单元,在所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。
[0028]进一步地,所述系统还包括忽略目录构建单元,所述忽略目录构建单元用于将固定忽略目录和用户输入的自定义忽略目录加入忽略目录库,形成忽略目录。
[0029]进一步地,所述忽略目录构建单元包括:
[0030]信息采集子单元,用于获取固定忽略目录或自定义忽略目录对应的路径字符串;
[0031]第一判断子单元,用于判断当前操作系统的类型是否为Windows系统;
[0032]第一字符串处理单元,对于Windows系统,将所述路径字符串中的字母进行大小写归一化,将反斜杠替换为斜杠,若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;
[0033]第二字符串处理单元,对于非Windows系统,判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。
[0034]进一步地,所述目录遍历单元包括:
[0035]字符串格式处理子单元,用于将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;
[0036]匹配子单元,在该忽略目录中查找是否存在当前目录的路径字符串;若不存在,则提取当前目录的中间子目录,重新匹配,至当前目录下的各子目录均与忽略目录匹配。
[0037]本专利技术第三方面提供了一种计算机存储介质,所述计算机存储介质中存储有计算机指令,所述计算机指令在所述系统上运行时,使所述系统执行所述方法的步骤。
[0038]本专利技术第二方面的所述文件遍历系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。
[0039]
技术实现思路
中提供的效果仅仅是实施例的效果,而不是专利技术所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
[0040]本专利技术通过对目标遍历目录中的元素类型进行区分,对于文件类型直接进行文件遍历业务,对于目录类型,在递归处理过程中仅比对路径字符串即可,改变了传统的递归方
式,且由于本专利技术实施例中对忽略目录的匹配仅发生在遍历阶段递归调用时,不必对每一个被遍历到的文件进行路径匹配,对系统性能消耗极小,且大幅提高遍历效率。
附图说明
[0041]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0042]图1是本专利技术所述方法实施例的流程示意图;
[0043]图2是本专利技术所述方法实施例中构建忽略目录的流程示意图;
[0044]图3是本专利技术所述系统实施例的结构示意图。
具体实施方式
[0045]为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本专利技术进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本专利技术的不同结构。为了简化本专利技术的公开,下文中对特定例子的部件和设置进行描述。此外,本专利技术可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种具有目录忽略机制的文件遍历方法,其特征是,所述方法包括以下步骤:获取目标遍历目录中的元素,判断所述元素的类型;当所述元素为文件时,执行文件遍历业务;当所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。2.根据权利要求1所述具有目录忽略机制的文件遍历方法,其特征是,在所述步骤之前,还包括:构建忽略目录,所述忽略目录中包括固定忽略目录和用户输入的自定义忽略目录。3.根据权利要求2所述具有目录忽略机制的文件遍历方法,其特征是,所述忽略目录的构建过程具体为:获取固定忽略目录或自定义忽略目录对应的路径字符串;判断当前操作系统的类型是否为Windows系统;若是,则将所述路径字符串中的字母进行大小写归一化,将反斜杠替换为斜杠,若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;若否,则判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。4.根据权利要求1所述具有目录忽略机制的文件遍历方法,其特征是,所述将当前目录的路径与预设忽略目录的路径进行匹配的具体过程为:将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;在该忽略目录中查找是否存在当前目录的路径字符串;若不存在,则提取当前目录的中间子目录,重复上述两步的操作,至当前目录下的各子目录均与忽略目录匹配。5.根据权利要求1所述具有目录忽略机制的文件遍历方法,其特征是,所述目标遍历目录中的元素通过std::filesystem::directory_iterator非递归迭代器获取。6.一种具有目录忽略机制的文件遍历系统,其特征是,所述系统包括:元素分析单元,获取目标遍历目录中的元素,判断所述元素的类型...

【专利技术属性】
技术研发人员:王勇
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1