一种加快文件读取的方法及计算机设备技术

技术编号:18525552 阅读:23 留言:0更新日期:2018-07-25 12:36
本发明专利技术涉及一种加快文件读取的方法及计算机设备,该方法包括:当分区标识F标记为上半区时,判断P与B之和是否大于C的一半;若是,则从文件中读取数据存储到下半区,且所述读取的数据的字节长度与C的一半相等,并从P的位置开始B字节;根据B字节,确定数据体的字节长度L;根据L,直接从P的位置开始读取L的数据;将L作为返回数据返回,同时将P更新为P+L以及将分区标识F标记为下半区。还涉及一种计算机设备。通过本发明专利技术将数据进行封装,按照数据头+数据体的方式进行存储的应用系统,并通过单次读入最大数据的N倍,然后再逐条数据返回的方式减低对文件IO操作,大大提高了数据处理的效率和速度。

【技术实现步骤摘要】
一种加快文件读取的方法及计算机设备
本专利技术属于领域,尤其涉及一种加快文件读取的方法及计算机设备。
技术介绍
传统的文件存储方式,采用比较普遍的方式是单条记录单行存放方式,所以在读取的时候采用也是单行读取的方式,这种读取方式每次读取一行,读取的次数和文件的行数相同,而且每次读取都需对存储数据的内存进行清空。传统按行读取方式较大的问题在于多次读取多次IO操作导致读取效率缓慢,所以在处理文件数据的应用系统时,随着处理文件系统的模块增加逐步会导致系统处理效率低。
技术实现思路
本专利技术所要解决的技术问题是:读取文件的效率缓慢,从而导致处理效率低。为解决上面的技术问题,本专利技术提供了一种加快文件读取的方法,该方法包括:S1、将预设内存数据块的存储容量的字节长度C划分为上半区和下半区,且用分区标识F作为上半区和下半区的标记;S2、当所述分区标识F标记为上半区时,判断当前偏移量P与当前数据的数据头的字节长度B之和是否大于所述字节长度C的一半;S3、若是,则从文件中读取数据存储到下半区,且所述读取的数据的字节长度与所述字节长度C的一半相等,并从所述当前偏移量P的位置开始读取字节长度B的数据;S4、根据所述字节长度B的数据,确定数据体的字节长度L;S5、根据所述字节长度L,直接从所述当前偏移量P的位置开始读取所述字节长度L的数据;S6、将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L以及将所述分区标识F标记为下半区;其中,P为偏移量的字节长度,B为预设数据头的字节长度,C为预设内存数据块的存储容量的字节长度。本专利技术的有益效果:通过上述的方法将数据进行封装,按照数据头(含标识和数据体长度,数据头长度固定)+数据体的方式进行存储的应用系统。通过单次读入最大数据的N倍,然后再逐条数据返回的方式减低对文件IO操作,大大提高了数据处理的效率和速度。进一步地,所述方法还包括:当前偏移量P与当前数据的数据头的字节长度B之和小于所述字节长度C的一半时,则从内存数据块中直接读取字节长度B的数据;根据所述字节长度B的数据,确定数据体的字节长度L;判断L+P之和是否大于所述字节长度C的一半,若否,则直接从所述当前偏移量P的位置开始读取字节长度L的数据;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L,同时所述分区标识F标记保留为上半区。进一步地,所述方法还包括:当L+P之和大于所述字节长度C的一半时,则从文件中读取数据存储到下半区,且所述读取数据的字节长度与所述字节长度C的一半相等,并从所述当前偏移量P的位置开始读取字节长度L的数据;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L以及将所述分区标识F标记为下半区。进一步地,当所述分区标识F标记为下半区时,判断所述当前偏移量P与所述数据头的字节长度B之和是否大于所述字节长度C;若否,则从所述当前偏移量P的位置开始读取字节长度B的数据;根据所述字节长度B的数据,确定所述数据体的字节长度L;判断L+P之和是否大于所述字节长度C,若否,则直接从所述当前偏移量P的位置开始读取所述字节长度L的数据;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L,同时所述分区标识F标记保留为下半区。进一步地,所述方法还包括:当L+P之和大于所述字节长度C时,则从文件中读取数据存储到上半区,且所述读取的数据的字节长度与所述字节长度C的一半相等,并从所述当前偏移量P的位置开始读取字节长度C-P的数据、且从内存数据块的初始位置开始读取字节长度L-(C-P)的数据;将所述字节长度C-P的数据和所述字节长度L-(C-P)的数据作为返回数据返回,并将所述当前偏移量P更新为L-(C-P)以及将所述分区标识F标记为上半区。进一步地,所述方法还包括:当所述当前偏移量P与所述数据头的字节长度B之和大于所述字节长度C时,则从文件中读取数据存储到上半区,且所述读取数据的字节长度与所述字节长度C的一半相等,并从所述当前偏移量P的位置开始读取字节长度C-P的数据和从内存数据块的初始位置开始读取字节长度B-(C-P)的数据;将所述字节长度C-P的数据和所述字节长度B-(C-P)的数据之和作为所述数据头的数据;根据所述数据头的数据,确定所述数据体的字节长度L;根据所述字节长度L,从所述当前偏移量P的位置开始读取字节长度C-P的数据和从上半区的数据中读取字节长度L-(C-P)的数据;将所述字节长度C-P的数据和所述字节长度L-(C-P)的数据作为返回数据返回,并将所述当前偏移量P更新为L-(C-P)以及将所述分区标识F标记为上半区。进一步地,该方法还包括:当首次从文件中读取数据存储到上半区,且所述读取数据的字节长度与所述字节长度C的一半相等,并从内存数据块中读取字节长度B的数据;根据所述字节长度B的数据,确定所述数据体的字节长度L;判断所述字节长度L是否大于所述字节长度C的一半,若否,则从当前偏移量P的位置直接从读取所述字节长度L的数据,其中首次读取时,当前偏移量P为0;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为L以及将所述分区标识F标记保留为上半区。进一步地,判断所述数据体的字节长度L是否大于所述字节长度C的一半还包括:当所述字节长度L小于所述字节长度C的一半时,则从文件中读取数据存储到所述下半区,且所述读取数据的字节长度与所述字节长度C的一半相等,并直接当前偏移量P的位置开始读取所述字节长度L的字节数据,其中首次读取时,当前偏移量P为0;将所述字节长度L的字节数据作为返回数据返回,同时将所述当前偏移量P更新为L以及将所述分区标识F标记为下半区。本专利技术还涉及一种计算机设备,该计算机设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上所述方法的步骤。本专利技术的有益效果:通过将数据进行封装,按照数据头(含标识和数据体长度,数据头长度固定)+数据体的方式进行存储的应用系统。通过单次读入最大数据的N倍,然后再逐条数据返回的方式减低对文件IO操作,大大提高了数据处理的效率和速度。附图说明图1为本专利技术的一种加快文件读取的方法的流程图;图2为本专利技术的一种加快文件读取的方法的示意图;图3为本专利技术的一种计算机设备的结构示意图。具体实施方式以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。在本专利技术中电信计费系统中TLV结构数据读,调用数据读取方法,从文件中不断获取数据记录,单条数据最大长度大小为2048字节,按块读取的块存储变量(以下用C来标记)是4096字节,头长度(以下用B标记)是3位,其中第一位是标识,第二位和第三位是长度标识,偏移量用P标记。如图1和图2所示,本专利技术实施例1提供的是一种加快文件读取的方法,该方法包括:S1、将预设内存数据块的存储容量的字节长度C划分为上半区和下半区,且用分区标识F作为上半区和下半区的标记;S2、当所述分区标识F标记为上半区时,判断当前偏移量P与当前数据的数据头的字节长度B之和是否大于所述字节长度C的一半;S3、若是,则从文件中读取数据存储到下半区,且所述读取的数据的字节长度与所述字节本文档来自技高网...

【技术保护点】
1.一种加快文件读取的方法,其特征在于,该方法包括:将预设内存数据块的存储容量的字节长度C划分为上半区和下半区,且用分区标识F作为上半区和下半区的标记;当所述分区标识F标记为上半区时,判断当前偏移量P与当前数据的数据头的字节长度B之和是否大于所述字节长度C的一半;若是,则从文件中读取数据存储到下半区,且所述读取的数据的字节长度与所述字节长度C的一半相等,并从所述当前偏移量P的位置开始读取字节长度B的数据;根据所述字节长度B的数据,确定数据体的字节长度L;根据所述字节长度L,直接从所述当前偏移量P的位置开始读取所述字节长度L的数据;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L以及将所述分区标识F标记为下半区;其中,P为偏移量的字节长度,B为预设数据头的字节长度,C为预设内存数据块的存储容量的字节长度。

【技术特征摘要】
1.一种加快文件读取的方法,其特征在于,该方法包括:将预设内存数据块的存储容量的字节长度C划分为上半区和下半区,且用分区标识F作为上半区和下半区的标记;当所述分区标识F标记为上半区时,判断当前偏移量P与当前数据的数据头的字节长度B之和是否大于所述字节长度C的一半;若是,则从文件中读取数据存储到下半区,且所述读取的数据的字节长度与所述字节长度C的一半相等,并从所述当前偏移量P的位置开始读取字节长度B的数据;根据所述字节长度B的数据,确定数据体的字节长度L;根据所述字节长度L,直接从所述当前偏移量P的位置开始读取所述字节长度L的数据;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L以及将所述分区标识F标记为下半区;其中,P为偏移量的字节长度,B为预设数据头的字节长度,C为预设内存数据块的存储容量的字节长度。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当前偏移量P与当前数据的数据头的字节长度B之和小于所述字节长度C的一半时,则从内存数据块中直接读取字节长度B的数据;根据所述字节长度B的数据,确定数据体的字节长度L;判断L+P之和是否大于所述字节长度C的一半,若否,则直接从所述当前偏移量P的位置开始读取字节长度L的数据;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L,同时所述分区标识F标记保留为上半区。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:当L+P之和大于所述字节长度C的一半时,则从文件中读取数据存储到下半区,且所述读取数据的字节长度与所述字节长度C的一半相等,并从所述当前偏移量P的位置开始读取字节长度L的数据;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L以及将所述分区标识F标记为下半区。4.根据权利要求1-3任一所述的方法,其特征在于,当所述分区标识F标记为下半区时,判断所述当前偏移量P与所述数据头的字节长度B之和是否大于所述字节长度C;若否,则从所述当前偏移量P的位置开始读取字节长度B的数据;根据所述字节长度B的数据,确定所述数据体的字节长度L;判断L+P之和是否大于所述字节长度C,若否,则直接从所述当前偏移量P的位置开始读取所述字节长度L的数据;将所述字节长度L的数据作为返回数据返回,同时将所述当前偏移量P更新为P+L,同时所述分区标识F标记保留为下半区。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:当L+P之和大于所述字节长度C时,则从文件中读取数据存储到上半区,且所述读取的数据的字节长度...

【专利技术属性】
技术研发人员:左冬杰
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1