本发明专利技术公开了一种基于哈希的文件打包和读取方法。该打包方法步骤:依次读取所需打包的文件;计算上述文件路径的哈希值;将文件写入文件数据区;将哈希值与文件的偏移值写入哈希表;完成所有文件的写入操作。该读取方法步骤:通过读入的文件索引信息获取包内文件路径的哈希值;在哈希表中查找对应的偏移值;在文件数据区读取偏移值对应的数据文件。本发明专利技术中包内文件标识采用哈希值,查找过程中无需进行字串匹配;索引上采用哈希表,可快速定位偏移地址;并且无法通过包文件还原原始目录结构。本发明专利技术作为一种基于哈希的文件打包和读取方法可广泛应用于计算机软件领域。
【技术实现步骤摘要】
本专利技术涉及一种文件打包和读取方法,尤其是。
技术介绍
现有软件客户端资源通常采用打包方式存储,从而获得传输方便、资源保密、以及更加快速访问速度等优点。在打包过程中,由于采用二分或B+树等传统的索引方式,其索引速度还有待提升;同时,由于传统包文件使用文件路径名作为包内文件的唯一标识,索引比较过程中需要进行字串中字符的逐一比较,相对耗时。在读取过程中,由于包文件中索引信息存储了包内文件的路径信息,恶意用户可以通过这些信息完全还原打包前文件的目录结构,这给软件产品带来了安全隐患。·
技术实现思路
为了解决上述技术问题,本专利技术所采用的技术方案是一种基于哈希的文件打包方法,打包方法包括以下步骤 A、依次读取所需打包的文件; B、计算上述文件路径的哈希值; C、将上述文件写入包文件中的文件数据区; D、将文件路径的哈希值与文件的偏移值写入包文件中的哈希表;E、判断是否读取完所有需打包的文件,若否,则继续执行步骤A,若是,则结束文件的打包。进一步,步骤B包括以下子步骤 BI、计算文件路径哈希值; B2、判断是否哈希冲突; B3、若不存在哈希冲突,则继续执行步骤C ;若存在哈希冲突,则改换哈希算法或者文件路径名称后,回到步骤BI重新执行。进一步,包文件中不保存包内文件的路径信息、目录结构或文件名。为了解决上述技术问题,本专利技术所采用的另一技术方案是一种基于哈希的文件读取方法,读取方法包括以下步骤 F、读取工具从上层应用接收到所需读取的文件的索引信息,通过文件索引信息获取包内文件的路径的哈希值; G、在哈希表中查找哈希值对应的偏移值; H、在包文件中的文件数据区读取与偏移值对应的数据文件。进一步,步骤F中的文件索引信息为包内文件的路径。进一步,步骤F中的文件索引信息为包内文件的路径的哈希值。本专利技术的有益效果是采用本专利技术的打包方法,包文件中哈希值唯一标识包内每一个文件,哈希表保存哈希值与偏移值的对应关系,读取包内文件不需要进行字串匹配,仅通过标识文件的哈希值即能从哈希表中快速定位具体包内文件的偏移信息,极大的提高了读取速度。本专利技术的另一有益效果是采用本专利技术的读取方法,与以往的读取方式相比,读取过程中可以不需要用到文件路径,从而恶意用户无法通过打包后的文件还原出打包前的原始目录结构。附图说明图I是本专利技术中打包后所得到的文件包示意 图2是本专利技术中打包过程的步骤 图3是图2所示打包过程中步骤B的子步骤图; 图4是本专利技术中读取过程的步骤图。具体实施例方式下面结合附图对本专利技术的具体实施方式作进一步说明 ,即是通过打包过程和读包过程进而完成对包内文件的写入与读取操作。参照图I中的包文件,打包过程即将文件写入到包文件中的过程,其通过打包工具完成。打包工具接收如下输入信息 1、所需打包的文件目录或文件列表; 2、所使用的哈希算法; 3、输出方式和输出位置。参照图2,一种基于哈希的文件打包方法,所述打包方法包括以下步骤 A、依次读取所需打包的文件; 打包工具根据输入信息,从磁盘上读取相应的文件,进而生成相应的文件包。所生成的文件包包含文件数据区和哈希表两个部分。文件数据区为包内文件存储提供场所,其中每个包内文件在文件数据区的位置称为此包内文件的偏移值。B、计算上述文件路径的哈希值; 哈希表中保存每个哈希值和偏移值的对应关系,用于读包过程中对文件进行快速查找。C、将文件写入包文件中的文件数据区。D、将文件路径的哈希值与文件的偏移值写入包文件中的哈希表; 当所有文件都已经写入文件数据区且所有哈希值都不相同时候,则此时将哈希值作为哈希表的关键码。E、判断是否读取完所有需打包的文件,若否,则继续执行步骤A,若是,则结束文件的打包。若已经读取完所有需打包的文件,则文件打包过程结束,得到如图I所示的文件包。参照图3,打包工具根据文件目录或文件列表读取到需要打包的文件,并将读取到的文件写入到文件数据区中,并在此时记录下文件在数据区中的位置,此位置即为此文件的偏移值。之后使用指定的哈希算法,为文件路径计算哈希值。进一步作为优选的实施方式,所述步骤B包括以下子步骤 BI、计算文件路径哈希值; B2、判断是否哈希冲突; B3、若不存在哈希冲突,则继续执行步骤C ;若存在哈希冲突,则改换哈希算法或者文件路径名称后,回到步骤BI重新执行。若此哈希值与之前所有文件计算过的所有哈希值都不相同,则可将此值作为文件的标识。若此哈希值与之前文件计算过的任意哈希值相同,则要求更换哈希算法或修改被 打包的文件路径。否则打包过程无法继续。进一步作为优选的实施方式,所述包文件中不保存包内文件的路径信息、目录结构或文件名。参照图4,一种基于哈希的文件读取方法,读包过程通过相应的客户端程序完成,所述读取方法包括以下步骤 F、读取工具从上层应用接收到所需读取的文件的索引信息,通过文件索引信息获取包内文件的路径的哈希值; G、在哈希表中查找哈希值对应的偏移值; H、在包文件中的文件数据区读取偏移值对应的数据文件。其对包内文件的读取方式分为两种 I、通过文件路径进行读取; 2.通过文件路径的哈希值进行读取。包文件读取的两种文件索引信息由客户端配置项或参数指定。进一步作为优选的实施方式,所述步骤F中的文件索引信息为包内文件的路径,所述包内文件的路径的哈希值通过相应哈希算法计算得出。即客户端接收传入的所需读取的文件路径,并使用与打包时相同的哈希算法计算此文件路径的哈希值。经过计算得到哈希值后,即可在哈希表中查找出此包内文件的偏移值。读取偏移值位置的文件,即完成文件读取。进一步作为优选的实施方式,所述步骤F中的文件索引信息为包内文件的路径的哈希值。采用文件路径的哈希值进行读取,则客户端接收传入所需读取的文件路径哈希值。得到此哈希值后,直接在哈希表中进行查找,即可得此包内文件的偏移值。读取偏移值位置的文件,即完成文件读取。以上是对本专利技术的较佳实施进行了具体说明,但本专利技术创造并不限于所述实施例,熟悉本领域的技术人员在不违背本专利技术精神的前提下还可以作出种种的等同变换或替换,这些等同的变换或替换均包含在本申请权利要求所限定的范围内。权利要求1.一种基于哈希的文件打包方法,其特征在于该打包方法包括以下步骤 A、依次读取所需打包的文件; B、计算上述文件路径的哈希值; C、将上述文件写入包文件中的文件数据区; D、将文件路径的哈希值与文件的偏移值写入包文件中的哈希表; E、判断是否读取完所有需打包的文件,若否,则继续执行步骤A,若是,则结束文件的打包。2.根据权利要求I所述的一种基于哈希的文件打包方法,其特征在于所述步骤B包括以下子步骤 BI、计算文件路径哈希值; B2、判断是否哈希冲突; B3、若不存在哈希冲突,则继续执行步骤C ;若存在哈希冲突,则改换哈希算法或者文件路径名称后,回到步骤BI重新执行。3.根据权利要求I或2所述的一种基于哈希的文件打包方法,其特征在于所述包文件中不保存包内文件的路径信息、目录结构或文件名。4.一种基于哈希的文件读取方法,其特征在于该读取方法包括以下步骤 F、读取工具从上层应用接收到所需读取的文件的索引信息,通过文件索引信息获取包内文件的路径的哈希值; G、在哈希表中查找哈希值对应的偏本文档来自技高网...
【技术保护点】
一种基于哈希的文件打包方法,其特征在于:该打包方法包括以下步骤:A、依次读取所需打包的文件;B、计算上述文件路径的哈希值;C、将上述文件写入包文件中的文件数据区;D、将文件路径的哈希值与文件的偏移值写入包文件中的哈希表;E、判断是否读取完所有需打包的文件,若否,则继续执行步骤A,若是,则结束文件的打包。
【技术特征摘要】
【专利技术属性】
技术研发人员:陈飞舟,吴才忠,刘畅,
申请(专利权)人:珠海金山网络游戏科技有限公司,成都西山居互动娱乐科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。