[发明专利]文件比对方法和设备有效
| 申请号: | 201310144068.2 | 申请日: | 2013-04-24 |
| 公开(公告)号: | CN104123280B | 公开(公告)日: | 2017-08-25 |
| 发明(设计)人: | 张逊;李岭;吴金坛;吕苏 | 申请(专利权)人: | 中国银联股份有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 中国专利代理(香港)有限公司72001 | 代理人: | 俞华梁,朱海煜 |
| 地址: | 200135 上海*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 文件 方法 设备 | ||
技术领域
本发明涉及文件处理领域,尤其涉及文件比对方法和设备。
背景技术
目前,在比对文件时通常需要将对比的文件全部读入内存中来进行处理,这往往会大量占用系统资源,导致效率较低。
为了解决该问题,在现有技术,例如公开号为CN102693302A、发明名称为“快速文件比对方法、系统及客户端”的发明专利中,提出了一种基于标识树的文件系统比对方法。在该发明专利中,发明人提出对本地文件目录进行扫描分析,并根据本地文件系统的变化来更新客户端维护的标识树。标识树中的各个节点与客户端的本地文件系统结构中的各个目录相对应。通过标识树中逐个节点之间的比较,可以快速发现差异节点,找出变化文件。
这种方案或许对找出变化文件有效,但并不能解决文件比对时效率低下的问题,更不能解决遇到大文件或超大文件(例如单个文件大小超过1GB的文件)比较时,内存出现瓶颈,甚至出现程序崩溃的问题。
发明内容
为解决上述问题,根据本发明的一个方面,提供了一种文件比对方法,包括:对所述文件中的数据进行分块读取;对于已经分块读取的数据,按照适当的方式进行数据比对;如果所述数据之间的索引不匹配,则在索引数组中进行二次匹配,其中,所述索引数组用于存放比对过程中没有匹配的索引记录,以及将比对的结果输出到结果文件中。
在上述方法中,分块读取的数据为固定大小的数据块。
在上述方法中,对所述文件中的数据进行分块读取包括:读入固定大小的数据块;判断读入的数据块中末位是否为行结束符或文件结束符;以及如果读入的数据块中末尾既不是行结束符也不是文件结束符,则删除最后一个行结束符后的数据,并将下一次读取起始位置设置为最后一个行结束符位置。
在上述方法中,所述分块读取与所述数据比对并行执行。
在上述方法中,对于已经分块读取的数据,按照适当的方式进行数据比对包括:提取两边对比数据的索引;以及如果索引匹配的话,则对所述数据按行进行拆分比对。
在上述方法中,在索引数组中进行二次匹配包括:遍历所述索引数组;以及如果存在匹配的索引,则对该索引指定的行数据进行比较,并在所述索引数组中删除该索引;如果不存在匹配的索引,则将与该索引对应的信息写入所述索引数组中。
根据本发明的另一个方面,提供了一种用于对文件进行比对的设备,包括:文件块读取装置,用于对所述文件中的数据进行分块读取;文件数据比对装置,用于对于已经分块读取的数据,按照适当的方式进行数据比对;二次匹配装置,用于在所述数据之间的索引不匹配时在索引数组中进行二次匹配,其中,所述索引数组用于存放比对过程中没有匹配的索引记录,以及结果输出装置,用于将比对的结果输出到结果文件中。
在上述设备中,分块读取的数据为固定大小的数据块。
在上述设备中,所述文件块读取装置配置成读入固定大小的数据块;判断读入的数据块中末位是否为行结束符或文件结束符;以及在读入的数据块中末尾既不是行结束符也不是文件结束符时删除最后一个行结束符后的数据,并将下一次读取起始位置设置为最后一个行结束符位置。
在上述设备中,所述文件块读取装置与所述文件数据比对装置并行执行。
在上述设备中,所述文件数据比对装置配置成提取两边对比数据的索引;以及如果索引匹配的话,则对所述数据按行进行拆分比对。
在上述设备中,所述二次匹配装置配置成遍历所述索引数组;以及在存在匹配的索引时对该索引指定的行数据进行比较,并在所述索引数组中删除该索引,而在不存在匹配的索引时将与该索引对应的信息写入所述索引数组中。
本发明提出了一种文件比较的分块处理机制,针对大型文件(单个文件大小超过1G的文件)的比对,不直接将文件读入内存,而是预设一个的最大读入字节量,按照最大读入字节量对文件进行分块读入。分块时不需要对文件进行预处理,不需要遍历文件,只需按照字节偏移量读入。文件全部读取完毕前,不关闭文件句柄,减少IO消耗。针对读取的块数据,依照索引,按行对文件内容进行比对,极大的减小内存和CPU的压力。
在分块文件比对过程中,会在内存中保留两边没有匹配上的数据索引数组。在对下一块数据进行比对时,若没有匹配到索引,则去没有匹配上的索引数组中去匹配。若存在,则进行比对后对索引数组中该条记录进行释放;若不存在,则将该条索引存入索引数组。这种方法解决了乱序文件在分块比对时容易匹配出错的问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国银联股份有限公司,未经中国银联股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310144068.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于油漆晾干的防尘装置
- 下一篇:烘干房加热器





