《文件比对方法和设备.pdf》由会员分享,可在线阅读,更多相关《文件比对方法和设备.pdf(10页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104123280A43申请公布日20141029CN104123280A21申请号201310144068222申请日20130424G06F17/3020060171申请人中国银联股份有限公司地址200135上海市浦东新区含笑路36号银联大厦72发明人张逊李岭吴金坛吕苏74专利代理机构中国专利代理香港有限公司72001代理人俞华梁朱海煜54发明名称文件比对方法和设备57摘要本发明公开了一种文件比对方法,包括对所述文件中的数据进行分块读取;对于已经分块读取的数据,按照适当的方式进行数据比对;如果所述数据之间的索引不匹配,则在索引数组中进行二次匹配,其中,所述索引数组用于存放。
2、比对过程中没有匹配的索引记录,以及将比对的结果输出到结果文件中。本发明还公开了一种用于对文件进行比对的设备。51INTCL权利要求书1页说明书4页附图4页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书4页附图4页10申请公布号CN104123280ACN104123280A1/1页21一种文件比对方法,其特征在于,包括对所述文件中的数据进行分块读取;对于已经分块读取的数据,按照适当的方式进行数据比对;如果所述数据之间的索引不匹配,则在索引数组中进行二次匹配,其中,所述索引数组用于存放比对过程中没有匹配的索引记录,以及将比对的结果输出到结果文件中。2如权利要求1所述的方法,。
3、其中,分块读取的数据为固定大小的数据块。3如权利要求1所述的方法,其中,对所述文件中的数据进行分块读取包括读入固定大小的数据块;判断读入的数据块中末位是否为行结束符或文件结束符;以及如果读入的数据块中末尾既不是行结束符也不是文件结束符,则删除最后一个行结束符后的数据,并将下一次读取起始位置设置为最后一个行结束符位置。4如权利要求1所述的方法,其中,所述分块读取与所述数据比对并行执行。5如权利要求1所述的方法,其中,对于已经分块读取的数据,按照适当的方式进行数据比对包括提取两边对比数据的索引;以及如果索引匹配的话,则对所述数据按行进行拆分比对。6如权利要求1所述的方法,其中,在索引数组中进行二次。
4、匹配包括遍历所述索引数组;以及如果存在匹配的索引,则对该索引指定的行数据进行比较,并在所述索引数组中删除该索引;如果不存在匹配的索引,则将与该索引对应的信息写入所述索引数组中。7一种用于对文件进行比对的设备,包括文件块读取装置,用于对所述文件中的数据进行分块读取;文件数据比对装置,用于对于已经分块读取的数据,按照适当的方式进行数据比对;二次匹配装置,用于在所述数据之间的索引不匹配时在索引数组中进行二次匹配,其中,所述索引数组用于存放比对过程中没有匹配的索引记录,以及结果输出装置,用于将比对的结果输出到结果文件中。8如权利要求7所述的设备,其中,分块读取的数据为固定大小的数据块。9如权利要求7所。
5、述的设备,其中,所述文件块读取装置配置成读入固定大小的数据块;判断读入的数据块中末位是否为行结束符或文件结束符;以及在读入的数据块中末尾既不是行结束符也不是文件结束符时删除最后一个行结束符后的数据,并将下一次读取起始位置设置为最后一个行结束符位置。10如权利要求7所述的设备,其中,所述文件块读取装置与所述文件数据比对装置并行执行。11如权利要求7所述的设备,其中,所述文件数据比对装置配置成提取两边对比数据的索引;以及如果索引匹配的话,则对所述数据按行进行拆分比对。12如权利要求7所述的设备,其中,所述二次匹配装置配置成遍历所述索引数组;以及在存在匹配的索引时对该索引指定的行数据进行比较,并在所。
6、述索引数组中删除该索引,而在不存在匹配的索引时将与该索引对应的信息写入所述索引数组中。权利要求书CN104123280A1/4页3文件比对方法和设备技术领域0001本发明涉及文件处理领域,尤其涉及文件比对方法和设备。背景技术0002目前,在比对文件时通常需要将对比的文件全部读入内存中来进行处理,这往往会大量占用系统资源,导致效率较低。0003为了解决该问题,在现有技术,例如公开号为CN102693302A、发明名称为“快速文件比对方法、系统及客户端”的发明专利中,提出了一种基于标识树的文件系统比对方法。在该发明专利中,发明人提出对本地文件目录进行扫描分析,并根据本地文件系统的变化来更新客户端维。
7、护的标识树。标识树中的各个节点与客户端的本地文件系统结构中的各个目录相对应。通过标识树中逐个节点之间的比较,可以快速发现差异节点,找出变化文件。0004这种方案或许对找出变化文件有效,但并不能解决文件比对时效率低下的问题,更不能解决遇到大文件或超大文件(例如单个文件大小超过1GB的文件)比较时,内存出现瓶颈,甚至出现程序崩溃的问题。发明内容0005为解决上述问题,根据本发明的一个方面,提供了一种文件比对方法,包括对所述文件中的数据进行分块读取;对于已经分块读取的数据,按照适当的方式进行数据比对;如果所述数据之间的索引不匹配,则在索引数组中进行二次匹配,其中,所述索引数组用于存放比对过程中没有匹。
8、配的索引记录,以及将比对的结果输出到结果文件中。0006在上述方法中,分块读取的数据为固定大小的数据块。0007在上述方法中,对所述文件中的数据进行分块读取包括读入固定大小的数据块;判断读入的数据块中末位是否为行结束符或文件结束符;以及如果读入的数据块中末尾既不是行结束符也不是文件结束符,则删除最后一个行结束符后的数据,并将下一次读取起始位置设置为最后一个行结束符位置。0008在上述方法中,所述分块读取与所述数据比对并行执行。0009在上述方法中,对于已经分块读取的数据,按照适当的方式进行数据比对包括提取两边对比数据的索引;以及如果索引匹配的话,则对所述数据按行进行拆分比对。0010在上述方法。
9、中,在索引数组中进行二次匹配包括遍历所述索引数组;以及如果存在匹配的索引,则对该索引指定的行数据进行比较,并在所述索引数组中删除该索引;如果不存在匹配的索引,则将与该索引对应的信息写入所述索引数组中。0011根据本发明的另一个方面,提供了一种用于对文件进行比对的设备,包括文件块读取装置,用于对所述文件中的数据进行分块读取;文件数据比对装置,用于对于已经分块读取的数据,按照适当的方式进行数据比对;二次匹配装置,用于在所述数据之间的索引不匹配时在索引数组中进行二次匹配,其中,所述索引数组用于存放比对过程中没有匹配的索引记录,以及结果输出装置,用于将比对的结果输出到结果文件中。说明书CN104123。
10、280A2/4页40012在上述设备中,分块读取的数据为固定大小的数据块。0013在上述设备中,所述文件块读取装置配置成读入固定大小的数据块;判断读入的数据块中末位是否为行结束符或文件结束符;以及在读入的数据块中末尾既不是行结束符也不是文件结束符时删除最后一个行结束符后的数据,并将下一次读取起始位置设置为最后一个行结束符位置。0014在上述设备中,所述文件块读取装置与所述文件数据比对装置并行执行。0015在上述设备中,所述文件数据比对装置配置成提取两边对比数据的索引;以及如果索引匹配的话,则对所述数据按行进行拆分比对。0016在上述设备中,所述二次匹配装置配置成遍历所述索引数组;以及在存在匹配。
11、的索引时对该索引指定的行数据进行比较,并在所述索引数组中删除该索引,而在不存在匹配的索引时将与该索引对应的信息写入所述索引数组中。0017本发明提出了一种文件比较的分块处理机制,针对大型文件单个文件大小超过1G的文件的比对,不直接将文件读入内存,而是预设一个的最大读入字节量,按照最大读入字节量对文件进行分块读入。分块时不需要对文件进行预处理,不需要遍历文件,只需按照字节偏移量读入。文件全部读取完毕前,不关闭文件句柄,减少IO消耗。针对读取的块数据,依照索引,按行对文件内容进行比对,极大的减小内存和CPU的压力。0018在分块文件比对过程中,会在内存中保留两边没有匹配上的数据索引数组。在对下一块。
12、数据进行比对时,若没有匹配到索引,则去没有匹配上的索引数组中去匹配。若存在,则进行比对后对索引数组中该条记录进行释放;若不存在,则将该条索引存入索引数组。这种方法解决了乱序文件在分块比对时容易匹配出错的问题。0019与现有的文件比对机制相比,本发明提出的方法和设备在保证了中小型文件比较时的高效率的同时,解决了大型文件和超大型文件比较时效率低下及内存瓶颈的问题。附图说明0020在参照附图阅读了本发明的具体实施方式以后,本领域技术人员将会更清楚地了解本发明的各个方面。本领域技术人员应当理解的是这些附图仅仅用于配合具体实施方式说明本发明的技术方案,而并非意在对本发明的保护范围构成限制。0021图1是。
13、根据本发明的一个实施例的文件比对方法的示意图;图2是根据本发明的一个实施例的文件比对方法的流程图;图3是根据本发明的一个实施例、文件块大小确定的流程图;图4是根据本发明的一个实施例、文件块数据读入的流程图。具体实施方式0022下面介绍的是本发明的多个可能实施例中的一些,旨在提供对本发明的基本了解,并不旨在确认本发明的关键或决定性的要素或限定所要保护的范围。容易理解,根据本发明的技术方案,在不变更本发明的实质精神下,本领域的一般技术人员可以提出可相互替换的其它实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。。
14、0023现有的文件比对方法/工具需要将比对的整个文件装入内存才能进行比较,占用说明书CN104123280A3/4页5内存较大,这就造成一个普遍性的问题就是小中型文件的比较很快,但大型文件和超大型文件的比较却效率低下,而随着社会高度的信息化,文件所包含的信息量也越来越大,所要处理的文件也越来越大,导致现有工具无法满足人们的实际需求。0024为了解决上述问题,本发明提出了一种基于分块处理的文件比对方法。参考图1,图1示出一种基于分块处理的文件比对方法的示意图。如图1所示,分块处理是一个循环处理的过程,每一个循环的处理过程又由文件数据读取、数据比对、文件索引二次比对、结果输出四部分组成。0025具。
15、体来说,在本发明的一个实施方式中,该文件比对方法包括对所述文件中的数据进行分块读取;对于已经分块读取的数据,按照适当的方式进行数据比对;如果所述数据之间的索引不匹配,则在索引数组中进行二次匹配,其中,所述索引数组用于存放比对过程中没有匹配的索引记录,以及将比对的结果输出到结果文件中。0026在一个优选的实施例中,每次只读入固定大小的数据块以字节为单位。为了防止读入截断数据,对后续比对造成影响,故在每次截取时需要判断判断记录中的结束符。若读入的数据中末位非行结束符或者文件结束符,则回退到上一个行结束符截止,并记录数据指针,并将截至上一个行结束符的数据读入内存。0027在一个优选的实施例中,对于已。
16、读入的文件数据,就类似于一个小文件,以适当的方法对其进行比较即可。文件分块进程与比对进程并行运行,文件分块进程在内存中产生一个队列,队列中每个结构体存放文件名、数据块起始位置信息,按照先进先出的顺序依照数据块结构信息将文件数据导入内存供比对。比对过程中,新建两个索引数组,分别将两边文件没有匹配的索引记录存放在其中。0028在一个优选的实施例中,在对读入的文件块数据进行比对时,没有匹配到的索引,会到上一步生成的索引数组中进行二次匹配。若存在,则进行比对后对索引数组中该条记录进行释放;若不存在,则将该条索引存入索引数组。0029参考图2,图2示出了根据本发明的一个实施例的文件比对方法的整体流程图。。
17、在步骤1,按照块文件的阀值读入两个文件同样大小的一块数据文件。在步骤2,对块文件的数据进行比较,提取两边比对数据的索引。在步骤3,判定索引是否匹配。如果索引匹配的话,则进行行数据比较,否则的话就到配有匹配的索引数组中进行匹配。如步骤4至6所示,在待比对数据的索引不匹配时,选择在索引数组中进行二次匹配。例如,可遍历没有匹配的索引数组,如果存在匹配的索引,则对索引指定的行进行数据比较,并在索引数组中删除该索引值;如果不存在,则将索引信息写入索引数组保存。接着,如步骤7至11所示,对索引匹配的行数据进行拆分比较。如果行数据不一致,则写入结果文件;如果行数据一致则依次判断是否块文件或整个文件的结尾。如。
18、果不是块文件的结尾则跳转到下一条数据进行比较;如果是块文件结尾但不是整个文件结尾,则读取下一块文件数据进行比较;如果是整个文件结尾则停止比较。0030图3示出了根据本发明的一个实施例、文件块大小确定的流程图。如图3所示,在分块读入文件数据时,先从配置文件中读取预设的分块大小阀值(步骤1)并将读取的起始位置设置为文件开始的字节(步骤2),然后将文件开始的字节到偏移阀值量的数据导入内存(步骤3),在内存中判断最后一个行结束符的位置,记录该行结束符在文本中的偏移量(步骤4),并在内存中删除最后一个行结束符后的数据(步骤5)。当块文件数据处理完毕后,说明书CN104123280A4/4页6则对后续数据。
19、进行判断,若读入数据达文件尾,则结束读入;若不为文件尾则继续从上一次读入的结束位置开始读入偏移阀值量的数据继续处理。0031图4示出了根据本发明的一个实施例、文件块数据读入的流程图。如图4所示,在文件分块大小确定(步骤1)后,将文件导入内存,逐行读取文件数据(步骤2),并计算剩余未读取的文件块数据的大小记录到内存中(步骤3),若读入的内存块数据已处理完或到达文件尾,则结束读入(步骤4)。0032本领域技术人员容易理解的是,本发明前述的方法可采用软件编程或硬件电路的方式来实现。因而,根据本发明的另一个方面,提供了一种用于对文件进行比对的设备,包括文件块读取装置,用于对所述文件中的数据进行分块读取。
20、;文件数据比对装置,用于对于已经分块读取的数据,按照适当的方式进行数据比对;二次匹配装置,用于在所述数据之间的索引不匹配时在索引数组中进行二次匹配,其中,所述索引数组用于存放比对过程中没有匹配的索引记录,以及结果输出装置,用于将比对的结果输出到结果文件中。0033通过采用本发明所述的方法和设备,可在保证了中小型文件比较时的高效率的同时,解决了大型文件和超大型文件比较时效率低下及内存瓶颈的问题。0034上文中,参照附图描述了本发明的具体实施方式。但是,本领域中的普通技术人员能够理解,在不偏离本发明的精神和范围的情况下,还可以对本发明的具体实施方式作各种变更和替换。这些变更和替换都落在本发明权利要求书所限定的范围内。说明书CN104123280A1/4页7图1说明书附图CN104123280A2/4页8图2说明书附图CN104123280A3/4页9图3说明书附图CN104123280A4/4页10图4说明书附图CN104123280A10。