CN114398319A - 一种具有目录忽略机制的文件遍历方法及系统 - Google Patents
一种具有目录忽略机制的文件遍历方法及系统 Download PDFInfo
- Publication number
- CN114398319A CN114398319A CN202111559394.0A CN202111559394A CN114398319A CN 114398319 A CN114398319 A CN 114398319A CN 202111559394 A CN202111559394 A CN 202111559394A CN 114398319 A CN114398319 A CN 114398319A
- Authority
- CN
- China
- Prior art keywords
- directory
- character string
- traversal
- path
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000010606 normalization Methods 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 4
- 230000006399 behavior Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/144—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种具有目录忽略机制的文件遍历方法及系统,方法包括获取目标遍历目录中的元素,判断所述元素的类型;当所述元素为文件时,执行文件遍历业务;当所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。本发明通过对目标遍历目录中的元素类型进行区分,对于文件类型直接进行文件遍历业务,对于目录类型,在递归处理过程中仅比对路径字符串即可,改变了传统的递归方式,且由于本发明实施例中对忽略目录的匹配仅发生在遍历阶段递归调用时,不必对每一个被遍历到的文件进行路径匹配,对系统性能消耗极小,且大幅提高遍历效率。
Description
技术领域
本发明涉及文件遍历技术领域,尤其是一种具有目录忽略机制的文件遍历方法及系统。
背景技术
硬盘文件遍历,是对一类安全软件行为的统称。这种行为可能是:为了实现全局应用程序启动控制而进行的全盘文件哈希值计算,或者为了实现对全盘重要文件完整性进行监测而进行的全盘文件哈希值计算。这些行为的共同点是,需要对某个操作系统中整个硬盘或者部分目录下全部文件进行处理。在下文中,这一类的行为统称“文件遍历业务”。文件遍历业务是本发明的“服务对象”,但不是本发明的关注点。
这一遍历过程的耗时,可能会因系统硬件的配置落后等因素而变得十分冗长。同时,由于客户环境的因素,硬盘上可能存在一些不需要执行“文件遍历业务”的目录。因此,结合这两种情况,有必要在执行文件遍历时允许用户对遍历过程进行“指导”,从而允许一部分目录得以跳过遍历业务。这些目录称作忽略目录。
目前大多数的文件系统遍历过程使用的是递归迭代器,以std::filesystem::recursive_directory_iterator为代表,需要在迭代到每一个文件时对文件所处的目录与忽略目录进行比对,因此对目录的忽略将会是一种十分耗时的操作。
发明内容
本发明提供了一种具有目录忽略机制的文件遍历方法及系统,用于解决现有文件遍历过程耗时长的问题。
为实现上述目的,本发明采用下述技术方案:
本发明第一方面提供了一种具有目录忽略机制的文件遍历方法,所述方法包括以下步骤:
获取目标遍历目录中的元素,判断所述元素的类型;
当所述元素为文件时,执行文件遍历业务;
当所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。
进一步地,在所述步骤之前,还包括:
构建忽略目录,所述忽略目录中包括固定忽略目录和用户输入的自定义忽略目录。
进一步地,所述忽略目录的构建过程具体为:
获取固定忽略目录或自定义忽略目录对应的路径字符串;
判断当前操作系统的类型是否为Windows系统;
若是,则将所述路径字符串中的字母进行大小写归一化,将反斜杠替换为斜杠,若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;
若否,则判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。
进一步地,所述将当前目录的路径与预设忽略目录的路径进行匹配的具体过程为:
将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;
在该忽略目录中查找是否存在当前目录的路径字符串;
若不存在,则提取当前目录的中间子目录,重复上述两步的操作,至当前目录下的各子目录均与忽略目录匹配。
进一步地,所述目标遍历目录中的元素通过
std::filesystem::directory_iterator非递归迭代器获取。
本发明第二方面提供了一种具有目录忽略机制的文件遍历系统,所述系统包括:
元素分析单元,获取目标遍历目录中的元素,判断所述元素的类型;
文件遍历单元,在所述元素为文件时,执行文件遍历业务;
目录遍历单元,在所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。
进一步地,所述系统还包括忽略目录构建单元,所述忽略目录构建单元用于将固定忽略目录和用户输入的自定义忽略目录加入忽略目录库,形成忽略目录。
进一步地,所述忽略目录构建单元包括:
信息采集子单元,用于获取固定忽略目录或自定义忽略目录对应的路径字符串;
第一判断子单元,用于判断当前操作系统的类型是否为Windows系统;
第一字符串处理单元,对于Windows系统,将所述路径字符串中的字母进行大小写归一化,将反斜杠替换为斜杠,若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;
第二字符串处理单元,对于非Windows系统,判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。
进一步地,所述目录遍历单元包括:
字符串格式处理子单元,用于将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;
匹配子单元,在该忽略目录中查找是否存在当前目录的路径字符串;若不存在,则提取当前目录的中间子目录,重新匹配,至当前目录下的各子目录均与忽略目录匹配。
本发明第三方面提供了一种计算机存储介质,所述计算机存储介质中存储有计算机指令,所述计算机指令在所述系统上运行时,使所述系统执行所述方法的步骤。
本发明第二方面的所述文件遍历系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
本发明通过对目标遍历目录中的元素类型进行区分,对于文件类型直接进行文件遍历业务,对于目录类型,在递归处理过程中仅比对路径字符串即可,改变了传统的递归方式,且由于本发明实施例中对忽略目录的匹配仅发生在遍历阶段递归调用时,不必对每一个被遍历到的文件进行路径匹配,对系统性能消耗极小,且大幅提高遍历效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明所述方法实施例的流程示意图;
图2是本发明所述方法实施例中构建忽略目录的流程示意图;
图3是本发明所述系统实施例的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
如图1所示,本发明提供了一种具有目录忽略机制的文件遍历方法,所述方法包括以下步骤:
获取目标遍历目录中的元素,判断所述元素的类型,元素的类型包括文件和目录;
当所述元素为文件时,执行文件遍历业务;
当所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。
本发明实施例的其一实现方式中,在所述步骤之前,还包括:
构建忽略目录,所述忽略目录中包括固定忽略目录和用户输入的自定义忽略目录。
如图2所示,所述忽略目录的构建过程具体为:
获取固定忽略目录或自定义忽略目录对应的路径字符串(待处理路径字符串);
判断当前操作系统的类型是否为Windows系统;
若是,则将所述路径字符串中的字母进行大小写归一化,本实施例中全部转为小写,将反斜杠(\)替换为斜杠(/),若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;
若否,则判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。
另外在构建忽略目录的过程中,包括预加入忽略目录的查重操作,即在计入忽略目录之前,检索当前忽略目录中是否存在欲加入的当前路径字符串,若存在,则丢弃,即不重复加入忽略目录。
所述将当前目录的路径与预设忽略目录的路径进行匹配的具体过程为:
将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;
在该忽略目录中查找是否存在当前目录的路径字符串;
若不存在,则提取当前目录的中间子目录,重复上述两步的操作,至当前目录下的各子目录均与忽略目录匹配。对属于忽略目录的元素跳过、不予处理,进而实现了忽略目录的目的。
所述目标遍历目录中的元素通过std::filesystem::directory_iterator非递归迭代器获取。
上述实施例中,由于对忽略目录的匹配仅发生在遍历阶段递归调用时,不必对每一个被遍历到的文件进行路径匹配,从而实现了匹配过程性能消耗无限趋近于忽略不计的目的。
如图3所示,本发明实施例还提供了一种具有目录忽略机制的文件遍历系统,所述系统包括元素分析单元1、文件遍历单元2、目录遍历单元3和忽略目录构建单元4。
元素分析单元1获取目标遍历目录中的元素,判断所述元素的类型;文件遍历单元2在所述元素为文件时,执行文件遍历业务;目录遍历单元3在所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。忽略目录构建单元4用于将固定忽略目录和用户输入的自定义忽略目录加入忽略目录库,形成忽略目录。
目录遍历单元3包括字符串格式处理子单元31和匹配子单元32。
字符串格式处理子单元31用于将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;匹配子单元32在该忽略目录中查找是否存在当前目录的路径字符串;若不存在,则提取当前目录的中间子目录,重新匹配,至当前目录下的各子目录均与忽略目录匹配。
所述忽略目录构建单元4包括信息采集子单元41、判断子单元42、第一字符串处理子单元43和第二字符串处理子单元44。
信息采集子单元41用于获取固定忽略目录或自定义忽略目录对应的路径字符串;判断子单元42用于判断当前操作系统的类型是否为Windows系统;第一字符串处理子单元43对于Windows系统,将所述路径字符串中的字母进行大小写归一化,将反斜杠替换为斜杠,若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;第二字符串处理子单元44对于非Windows系统,判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质中存储有计算机指令,所述计算机指令在所述系统上运行时,使所述系统执行所述方法的步骤。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种具有目录忽略机制的文件遍历方法,其特征是,所述方法包括以下步骤:
获取目标遍历目录中的元素,判断所述元素的类型;
当所述元素为文件时,执行文件遍历业务;
当所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。
2.根据权利要求1所述具有目录忽略机制的文件遍历方法,其特征是,在所述步骤之前,还包括:
构建忽略目录,所述忽略目录中包括固定忽略目录和用户输入的自定义忽略目录。
3.根据权利要求2所述具有目录忽略机制的文件遍历方法,其特征是,所述忽略目录的构建过程具体为:
获取固定忽略目录或自定义忽略目录对应的路径字符串;
判断当前操作系统的类型是否为Windows系统;
若是,则将所述路径字符串中的字母进行大小写归一化,将反斜杠替换为斜杠,若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;
若否,则判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。
4.根据权利要求1所述具有目录忽略机制的文件遍历方法,其特征是,所述将当前目录的路径与预设忽略目录的路径进行匹配的具体过程为:
将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;
在该忽略目录中查找是否存在当前目录的路径字符串;
若不存在,则提取当前目录的中间子目录,重复上述两步的操作,至当前目录下的各子目录均与忽略目录匹配。
5.根据权利要求1所述具有目录忽略机制的文件遍历方法,其特征是,所述目标遍历目录中的元素通过
std::filesystem::directory_iterator非递归迭代器获取。
6.一种具有目录忽略机制的文件遍历系统,其特征是,所述系统包括:
元素分析单元,获取目标遍历目录中的元素,判断所述元素的类型;
文件遍历单元,在所述元素为文件时,执行文件遍历业务;
目录遍历单元,在所述元素为目录时,将当前目录的路径与预设忽略目录的路径进行匹配,忽略对匹配成功目录的遍历。
7.根据权利要求6所述具有目录忽略机制的文件遍历系统,其特征是,所述系统还包括忽略目录构建单元,所述忽略目录构建单元用于将固定忽略目录和用户输入的自定义忽略目录加入忽略目录库,形成忽略目录。
8.根据权利要求7所述具有目录忽略机制的文件遍历系统,其特征是,所述忽略目录构建单元包括:
信息采集子单元,用于获取固定忽略目录或自定义忽略目录对应的路径字符串;
第一判断子单元,用于判断当前操作系统的类型是否为Windows系统;
第一字符串处理单元,对于Windows系统,将所述路径字符串中的字母进行大小写归一化,将反斜杠替换为斜杠,若路径字符串以斜杠结尾,则去掉末尾斜杠,将当前路径字符串加入忽略目录;
第二字符串处理单元,对于非Windows系统,判断路径字符串是否以斜杠结尾,若是则去掉末尾斜杠,将当前路径字符串加入忽略目录,若否则直接将当前路径字符串加入忽略目录。
9.根据权利要求6所述具有目录忽略机制的文件遍历系统,其特征是,所述目录遍历单元包括:
字符串格式处理子单元,用于将当前目录的路径字符串进行预处理,使其格式与忽略目录一致;
匹配子单元,在该忽略目录中查找是否存在当前目录的路径字符串;若不存在,则提取当前目录的中间子目录,重新匹配,至当前目录下的各子目录均与忽略目录匹配。
10.一种计算机存储介质,所述计算机存储介质中存储有计算机指令,其特征是,所述计算机指令在权利要求6-9任一项所述系统上运行时,使所述系统执行如权利要求1-4任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111559394.0A CN114398319B (zh) | 2021-12-17 | 2021-12-17 | 一种具有目录忽略机制的文件遍历方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111559394.0A CN114398319B (zh) | 2021-12-17 | 2021-12-17 | 一种具有目录忽略机制的文件遍历方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114398319A true CN114398319A (zh) | 2022-04-26 |
CN114398319B CN114398319B (zh) | 2024-01-12 |
Family
ID=81226764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111559394.0A Active CN114398319B (zh) | 2021-12-17 | 2021-12-17 | 一种具有目录忽略机制的文件遍历方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114398319B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116340268A (zh) * | 2023-02-28 | 2023-06-27 | 上海安博通信息科技有限公司 | 一种文件遍历方法、装置以及处理设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970728A (zh) * | 2013-02-01 | 2014-08-06 | 中国银联股份有限公司 | 一种文件的比对方法和系统 |
CN109343892A (zh) * | 2018-08-27 | 2019-02-15 | 北京奇虎科技有限公司 | 一种用于检测文件的方法、装置及计算机设备 |
CN110795397A (zh) * | 2019-10-30 | 2020-02-14 | 河南省有色金属地质矿产局第七地质大队 | 一种地质资料包目录与文件类型自动识别方法 |
-
2021
- 2021-12-17 CN CN202111559394.0A patent/CN114398319B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970728A (zh) * | 2013-02-01 | 2014-08-06 | 中国银联股份有限公司 | 一种文件的比对方法和系统 |
CN109343892A (zh) * | 2018-08-27 | 2019-02-15 | 北京奇虎科技有限公司 | 一种用于检测文件的方法、装置及计算机设备 |
CN110795397A (zh) * | 2019-10-30 | 2020-02-14 | 河南省有色金属地质矿产局第七地质大队 | 一种地质资料包目录与文件类型自动识别方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116340268A (zh) * | 2023-02-28 | 2023-06-27 | 上海安博通信息科技有限公司 | 一种文件遍历方法、装置以及处理设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114398319B (zh) | 2024-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI729472B (zh) | 特徵詞的確定方法、裝置和伺服器 | |
CN110457277B (zh) | 业务处理性能分析方法、装置、设备及存储介质 | |
CN113448935B (zh) | 用于提供日志信息的方法、电子设备和计算机程序产品 | |
CN106445476B (zh) | 一种代码变更信息确定方法、装置及电子设备 | |
EP2304649A1 (en) | Frame based video matching | |
CN106611044A (zh) | 一种sql优化方法及设备 | |
US20140372379A1 (en) | Method and system for data backup | |
CN112783786B (zh) | 测试案例的生成方法、装置、设备、介质和程序产品 | |
CN114398319A (zh) | 一种具有目录忽略机制的文件遍历方法及系统 | |
CN103714269A (zh) | 病毒的识别方法及设备 | |
EP2645238A1 (en) | File-processing device for executing a pre-processed file, and recording medium for executing a related file-processing method in a computer | |
Wei et al. | Loggrep: Fast and cheap cloud log storage by exploiting both static and runtime patterns | |
CN108664255B (zh) | 一种软件升级方法及装置 | |
CN110515792B (zh) | 基于web版任务管理平台的监控方法、装置以及计算机设备 | |
JP6792592B2 (ja) | 画面判別装置、画面判別方法及びプログラム | |
CN107943849B (zh) | 视频文件的检索方法及装置 | |
CN113821486B (zh) | pod库之间依赖关系的确定方法及其装置、电子设备 | |
CN110851293B (zh) | 一种信息系统联动处理的系统及方法 | |
CN110032366B (zh) | 一种代码定位方法及装置 | |
CN112527757B (zh) | 基于大规模芯片测试结果的快速检索方法 | |
CN110534158B (zh) | 一种基因序列比对方法、装置、服务器及介质 | |
CN110109934B (zh) | 一种数据库管理方法、装置、服务器及存储介质 | |
CN108984519B (zh) | 基于双模式的事件语料库自动构建方法、装置及存储介质 | |
CN111460790B (zh) | 英语地名通名的确定方法、装置、翻译设备和存储介质 | |
CN115037523B (zh) | 一种异构终端日志融合的apt检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |