[发明专利]一种地质资料包目录与文件类型自动识别方法有效

专利信息
申请号: 201911042814.0 申请日: 2019-10-30
公开(公告)号: CN110795397B 公开(公告)日: 2022-02-01
发明(设计)人: 刘文毅;邓吉秋;程广国;何美香;王振生;马鹏远;周斌;孙宏伟 申请(专利权)人: 河南省有色金属地质矿产局第七地质大队
主分类号: G06F16/14 分类号: G06F16/14;G06F16/16
代理公司: 郑州先风知识产权代理有限公司 41127 代理人: 马柯柯
地址: 450000 河南*** 国省代码: 河南;41
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 地质 资料 目录 文件类型 自动识别 方法
【权利要求书】:

1.一种地质资料包目录与文件类型自动识别方法,其特征在于:包括如下步骤:

(1)遍历:从地质资料包所在目录local_root开始,逐层对当前目录文件与子目录进行遍历处理:设每次遍历的当前目录为root,当前目录root所含文件集为files,文件集files中的具体文件为file,当前目录root所含子目录集为dirs、子目录集dirs中的具体目录为dir;逐层遍历时,当前目录root开始,然后以子目录名的字母顺序先后进行处理,每次处理目录root所含子目录集dirs中一个子目录dir,每一子目录dir的处理亦即下一层的遍历;遍历完所有的子目录dir,即处理完子目录集,之后处理当前目录的文件集files,以文件名的字母顺序循环,每次处理文件集files中的当前具体文件file;当前文件集files处理完后,进入下一个文件集files,文件集files的处理顺序是按照其名称字母在字母表中的顺序进行;之后,返回上级目录,直至所有文件和子目录遍历完毕;

(2)规则定义

建立目录与文件类型判别规则表,规则表具有以下特征:

A.覆盖地质资料包中目录与文件的可能类型;

B.为每个类型定义两级规则:

第一级规则为扩展名定义:所有目录的扩展名定义为DIR;无需识别具体类型的文件,扩展名定义为*;不按扩展名而按整个文件名识别的文件,扩展名定义为整个文件名;其它文件,按实际扩展名定义;

第二级为关联准则,用于目录或文件扩展名相同的不同类型的进一步判断;根据其上下级目录、及所含文件判断;对于文件,根据其所在目录、同目录文件进行判断;关联准则定义采用关键字\、*\、IS、LIKE、DIR、FILE、FILE NAME、FILE image,以及通配符*、分号;、斜杠\、具体名称字符串,其中关联准则基本关键字与语法规则如表1:

表1 基本关联准则定义

ID关联准则的类型准则含义
1\exp所在文件夹的上级文件夹
2*\exp所在文件夹的任一上级文件夹
3ISstr所在文件夹为str
4LIKEstr所在文件夹名包含str
5DIRstr所在文件夹含str目录
6FILENAME所在文件夹有同名但扩展名不同的文件
7FILE*.str所在文件夹有扩展名为.str的文件
8FILEimage所在文件夹有图片文件

其中:str表示具体名称字符串,多个字符串用分号;分割;exp为第2条至第8条准则中的任意一条;

上述关联准则可组合使用,形成具体文件类型的关联准则;

目录与文件类型规则定义如表2:

表2 目录与文件类型规则表

C.规则表以数据库表的方式存储;

D.所有目录与文件类型的判别准则,均需根据规则预先定义,即所有可能的类型,在识别处理前,需预先按照数据库表中表2规则定义其准则;

(3)目录与文件类型识别过程:

当遍历具体目录root或具体文件file时,对于文件file,直接从名称中提取点号及以后的部分作为其扩展名ext;对于目录root,根据第一级规则,直接设为DIR;然后在规则表中,查找扩展名字段Extension值等于扩展名ext的记录,并统计满足条件的记录数n,即扩展名匹配数;根据匹配数的不同,并结合关联准则Rules检验,进入步骤(3-2);确定唯一匹配的扩展名记录,获取该记录的编号ID作为当前文件类型;

(3-1)扩展名匹配数n的不同取值:

(3-1-1)当n=1、且Rules为空时,存在1条匹配记录,获取该匹配记录对应的文件类型,作为当前目录或文件的类型;Rules为空是指前述表2中对应行Rules字段为空值;

(3-1-2)当n≥1、且Rules不为空时,按ID从小到大顺序依次进行关联准则Rules检验,检验方法见步骤(3-2);当找到一条符合关联准则的记录时,获取对应ID,作为当前目录或文件类型,剩余的记录不再检验;当遍历完所有匹配记录,且无任何匹配记录满足关联准则检验时,则将其类型设为:其它未指明,ID为:90109;

(3-1-3)当n=0时,则不存在匹配记录,则将其类型设为:其它未指明,ID为:90109;

(3-2)当前类型关联准则检验方法:

根据当前类型ID,从数据库规则表中读取当前类型的规则字符串Rules,依据基本关联准则定义表1,依次判断Rules字符串中是否包含基本准则定义中的关键字,所述关键字是指基本关联准则定义表1中“关联准则”一栏对应字符串中非str的部分;

(3-2-1)str:判断的是由关键字所限定范围的当前目录或文件file名称,如果不包含分号,则名称字符串为仅包含str的集合;如果str包含分号,则按顺序从左边第一个分号开始,将字符串分割,分号前的部分为第一字符串,分号后的部分为第二字符串,如果第二字符串含有分号则继续分割,直到所有字符串均不含分号,名称字符串为str被分号所分割得到的所有字符串的集合;之后,判断名称字符串中的任一个字符串是否包含通配符*:如果名称字符串中的一个字符串S不包含通配符*,则判断S是否与file名称字符串相等,如相等则称为完全相等关系,若不相等则为不相等关系;如包含则称为包含关系,若不包含是为不包含关系;完全相等关系、不相等关系、包含关系、不包含关系,四种关系与关键字的组合用于关联准则检验,具体组合与判断方法见(3-2-2)~(3-2-5);

(3-2-2)关键字\、*\判断的是上级或任一上级目录的名称:判断当前目录root的上级目录,其名称是否是root字符串中倒数第一、第二个斜杠\或/之间的字符串,判断任一上级目录名称,是否是root字符串中按斜杠\或/分割所得的一字符串;

(3-2-3)关键字IS、LIKE:判断的是当前目录名称按步骤(3-2-1)的方法是否与名称字符串str有完全相等或包含关系,其中IS采用字符串完全相等关系匹配、LIKE采用字符串包含关系匹配;

(3-2-4)关键字DIR:判断的是当前目录的任一子文件夹名称,在当前目录root的子目录集dirs中,查找能完全相等、或包含关系匹配DIR后字符串str的子目录dir;

(3-2-5)关键字FILE:判断的是当前目录是否存在特定文件,其中NAME表示与当前文件file同名、但扩展名不同的文件,*.str表示扩展名为.str的任一文件,image表示任一图片文件;所述的NAME是规则中的字符串;

(4)目录与文件类型识别过程

(4-1)进入系统初始化,定义名称与规则匹配函数re_file,名称与规则匹配函数re_file的输入参数为名称name、关联准则Rules,输出为匹配true或不匹配false,函数的实现过程见步骤4-1-1)~4-1-3));之后进入4-2);

(4-1-1)获取输入参数:名称name、关联准则Rules;

(4-1-2)将关联准则rule中的.替换成\.,将关联准则rule中的*替换成.*,将关联准则rule中的;替换成)|(,在关联准则Rules第一个字符前加(,在关联准则Rules最后一个字符后加),得到正则表达式str_rule;

(4-1-3)判断名称name中是否有满足str_rule正则表达式的字符串,若有,则判定为匹配成功,名称与规则匹配函数re_file函数输出true;若没有,则判定为匹配不成功、函数输出false;

(4-2)获取目录文件类别规则表file_types,创建目录文件列表file_lists,记录目录文件信息,包括编号ID、名称name、上级目录root、文件类别编号type,获取当前需要识别的目录root_dir,进入步骤4-3);

(4-3)遍历目录root_dir下各层级子目录,识别每层级子目录中的子目录与文件类型,直到遍历完所有子目录,具体循环步骤如下:

(4-3-1)获取当前目录root,将当前目录类型编号dir_type赋初值为0;获得当前目录下所有文件的集合,即文件集files;获取当前目录下所有一级子目录的集合,即子目录集dirs;获取当前目录root的路径字符串,从中查找最后一个斜杠\或/的位置,以该斜杠\或/的位置为界,从root路径字符串中截取该位置以后的字符串,作为当前目录名称name,从root路径字符串中截取该该斜杠\或/的位置以前的字符串,作为上级目录root的路径;然后进入步骤4-3-2);

(4-3-2)从规则表file_types中获取所有Extension字段为DIR的记录集dir_types,循环遍历该记录集dir_types中每个类型记录record,判断目录名称name是否与当前记录root的关联准则Rules匹配,具体循环步骤如下:

(4-3-2-1)获得当前类型记录record的类型编号ID与关联准则Rules,进入步骤4-3-2-2);

(4-3-2-2)判断关联准则Rules是否包含字符串LIKE,如果包含LIKE,则表示目录名称需关联准则Rules中字符串LIKE后的字符串有完全相等或包含关系;将Rules中的LIKE替换成空字符串,以目录名称name、规则Rules为参数再调用re_file函数,返回步骤(4-1);如果re_file函数输出true,则当前目录类型为当前record的类型Types,进入步骤4-3-2-9);如果re_file函数输出false,则进入步骤4-3-3);如果关联准则Rules不包含字符串LIKE,则进入步骤4-3-2-3);

(4-3-2-3)判断关联准则Rules是否包含字符串*\DIR LIKE:

如果包含*\DIR LIKE,则表示其任一上级目录名称需匹配Rules中*\DIR LIKE后面的字符串,将Rules中的*\DIR LIKE”删除,将目录root按顺序从左边第一个斜杠\或/开始,将字符串分割,斜杠\或/前的部分为第一字符串,斜杠\或/后的部分为第二字符串,如果第二字符串含有斜杠\或/则继续分割,直到所有字符串均不含斜杠\或/,目录root被斜杠\或/所分割得到的所有字符串的集合,为所有上级目录名称集names;按分割后原始顺序,依次获得names中每个上级目录名称name;以上级目录名name、关联准则Rules为参数,调用re_file函数;如果re_file函数输出true,则当前目录类型为当前record的类型Types若re_file函数输出false,则不处理;循环结束时,进入步骤4-3-2-9);

如果关联准则Rules不包含字符串*\DIR LIKE,则进入步骤(4-3-2-4);

(4-3-2-4)判断关联准则Rules是否包含字符串DIR,如果包含DIR,则表示该子目录名称需匹配Rules中DIR后的字符串,将Rules中的DIR删除,再判断Rules是否包含在子目录集dirs中,如果是,则当前目录类型为当前record的类型Types,进入步骤4-3-2-9);如果Rules不包含在子目录集dirs中,则进入步骤4-3-3);如果关联准则Rules不包含字符串DIR,则进入步骤4-3-2-5);

(4-3-2-5)判断关联准则是否包含字符串IS,如果包含IS,则表示目录名称需与Rules中IS后的字符串具有完全相等关系;将该规则中的IS删除,再判断Rules是否与name相等,如果是则当前目录类型为当前record的类型Types,进入步骤4-3-2-9),否则进入步骤4-3-3);如果关联准则Rules不包含IS,则进入步骤4-3-2-6);

(4-3-2-6)判断关联准则Rules是否包含字符串\DIR,如果包含\DIR,则表示上级目录中存在某子目录,其名称与Rules中\DIR后的字符串相等;将该规则中的\DIR替换成空字符串,获得上级目录的子目录名称集names,从names中移除当前目录名称;按字母序循环对names中的目录名称name,以目录名称name、规则Rules为参数,调用re_file函数;如果re_file函数输出true,表示上级目录存在满足规则的子目录,则当前目录类型为当前record的ID,进入步骤4-3-2-9);如果re_file函数输出false,则进入步骤4-3-3);如果关联准则Rules不包含\DIR,且非记录集dir_types最后一条记录,则读取记录集dir_types下一条记录作为当前类型记录record,进入步骤4-3-2-1;否则进入步骤4-3-2-7);

(4-3-2-7)判断当前目录名称name是否包含.files字符串:如包含则表示目录为Markdown或HTML的附属目录,在规则表file_types中,查询Extension字段字符串包含.files的记录:如有输出记录,则当前目录类型编号dir_type为该记录的ID,进入步骤4-3-2-9);如没有输出记录,进入步骤4-3-2-8);若判断当前目录名称name不包含.files字符串,则不出路;

(4-3-2-8)判断当前目录类型编号dir_type是否为0;如为0,则表示未匹配成功任何目录类型,则该目录为一般目录,其目录类型编号为80101,进入步骤4-3-2-9);如当前目录类型编号dir_type不为0,则不处理;

(4-3-2-9)向目录文件列表file_lists添加已判断的当前目录信息,包括名称name、上级目录root、类型编号dir_type等,进入步骤4-3-3);

(4-3-3)按字母顺序循环遍历当前目录root下文件集files中每个文件file,依次以文件file扩展名、关联准则Rules、目录类型编号dir_type综合判断文件类型,具体循环处理步骤如下:

(4-3-3-1)将当前文件类型编号file_type赋初值为0,进入步骤4-3-3-2);

(4-3-3-2)通过以下步骤4-3-3-2-1)~4-3-3-2-3)从文件file中抽取用于扩展名匹配的字符串file_match,之后进入步骤4-3-3-3);

(4-3-3-2-1)以编码ID从小到大遍历规则表file_types中记录,读取当前记录的Extension字段;设判断条件一:该字段字符串包含.且不以.开头、不含通配符*;设判断条件二;文件file名称与Extension字段相等;如满足条件一、条件二中任一条件或同时满足,则file_match等于Extension字段值;如条件一、条件二均不满足,则进入步骤4-3-3-2-2);

(4-3-3-2-2)判断文件file名称中是否含有.,如有,则从名称中截取从.所在位置开始至结尾的字符串,赋值给file_match,如无.则进入步骤4-3-3-2-3);

(4-3-3-2-3)将file名称赋值给file_match;

(4-3-3-3)根据当前目录类型编号dir_type,判断其是否等于10109或10110:如等于10109或10110,则文件类型编号file_type为10100;如不等于10109或10110,再判断当前目录类型编号dir_type是否等于80201或80202:如当前目录类型编号dir_type等于80201或80202,则文件类型编号file_type为80203,如当前目录类型编号dir_type不等于80201或80202,则判断当前目录类型编号dir_type是否等于80301或80302:如当前目录类型编号dir_type等于80301或80302,则文件类型编号file_type为80303;如当前目录类型编号dir_type不等于80301或80302,则进入步骤4-3-3-4);

(4-3-3-4)获取file_types中Extension字段等于file_match的记录,并统计为匹配数n,进入步骤4-3-3-5);

(4-3-3-5)循环遍历每个满足条件的记录,获取其类型编号ID、关联准则Rules,通过以下步骤匹配文件file名称与字段Extension、关联准则Rules之间的关系:

(4-3-3-5-1)如关联准则Rules字段值中出现LIKE或*\DIR LIKE关键字,则返回步骤4-3-2-1)~4-3-2-8),判断当前目录类型编号dir_type:如目录类型dir_type0,则匹配数n赋值为1,文件类型编号file_type赋值为当前记录类型编号ID,进入步骤4-3-4-6);如dir_type=0,则匹配数n减1后的值赋为本次匹配数n的值,进入步骤4-3-3-5-2);

(4-3-3-5-2)如关联准则Rules字段值中出现FILE NAME关键字,则Rules表示当前目录需存在与文件file名称相同仅扩展名不同的文件,该文件名与文件file名称的相同部分赋为文件主名file_main,该文件名与文件file名称的不同部分赋为扩展名file_ext;获取当前目录root所有文件名列表,从中删除文件主名不为file_main的文件名字符串,由此得到当前文件file的同主名文件名列表;获得同主名文件名列表长度l,如果l1,则匹配数n为1,当前文件类型编号file_type为类型编号ID,进入步骤4-3-3-6);如l=1,则匹配数n减1,进入步骤(4-3-3-5-3);

(4-3-3-5-3)如关联准则Rules字段值中出现FILE*.str关键字,则Rules表示当前目录需存在与文件file名称相同仅扩展名不同的文件,且该文件扩展名为.str;获取当前目录root所有文件列表,从中剔除扩展名不为.str且文件主名不为file_main的字符串,由此得到当前文件filed的同主名、扩展名为.str的文件列表,获得列表长度l;如果l0,则n为1、文件类型编号file_type为当前记录ID,进入步骤4-3-3-6);如果l=0,则n减1,进入步骤4-3-4-6);

(4-3-3-6)如果匹配数n=0,则表示未匹配成功,赋值file_type为90109,进入步骤4-3-3-7);

(4-3-3-7)向目录文件列表file_lists添加已判断的当前文件信息,包括名称name、上级目录root、类型编号file_type,进入步骤4-3-4);

(4-3-4)如当前目录root的文件集files中存在未确定类型的文件,表示循环未结束,则继续循环、进入步骤4-3-3-1);当前目录root的文件集files中所有文件的类型均已确定,则循环结束,输出目录文件列表file_lists。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河南省有色金属地质矿产局第七地质大队,未经河南省有色金属地质矿产局第七地质大队许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201911042814.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top