一种磁盘文件的读写方法和装置转让专利

申请号 : CN201210436250.0

文献号 : CN103809915B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汤竞雄

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本申请提供了一种磁盘文件的读写方法和装置,该方法包括:预处理过程和磁盘文件的读写过程,预处理过程包括:在首次启动某一计算机软件时,将所述计算机软件在启动和运行过程中所需的磁盘文件按照格式进行解析,并建立内存数据队列,将内存数据队列保存为二进制文件;磁盘文件的读写过程包括:在后续启动当前计算机软件时,从磁盘中获取当前计算机软件唯一对应的当前二进制文件;将当前二进制文件加载至内存中以生成当前内存数据队列;依据当前计算机软件待读写的关键字,从当前内存数据队列中读取目标磁盘文件数据,或者,将目标磁盘文件数据写入当前内存数据队列中。采用本申请实施例的方法或装置,可以提高读写磁盘文件的速度。

权利要求 :

1.一种磁盘文件的读写方法,其特征在于,该方法包括预处理过程和磁盘文件的读写过程,其中,所述预处理过程包括:

在启动某一计算机软件时,将所述计算机软件在启动和运行过程中所需的磁盘文件按照对应的磁盘文件格式进行解析,并将解析后的磁盘文件读取到内存中建立与所述磁盘文件对应的内存数据队列,将所述内存数据队列保存为与所述计算机软件唯一对应的二进制文件并存储至磁盘中;所述内存数据队列保存有关键字和与所述关键字一一对应的磁盘文件数据;

所述磁盘文件的读写过程包括:

在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件;

将所述当前二进制文件加载至内存中以生成当前内存数据队列;

依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据,或者,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中。

2.根据权利要求1所述的方法,其特征在于,所述依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据,包括:判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据,如果是,则直接读取所述目标磁盘文件数据;

如果否,则获取与所述关键字对应的目标磁盘文件,按照所述目标磁盘文件的格式对所述目标磁盘文件进行解析,并读取解析所述目标磁盘文件得到的目标磁盘文件数据,并将所述关键字及目标磁盘文件数据添加至所述内存数据队列中。

3.根据权利要求2所述的方法,其特征在于,在所述直接读取所述目标磁盘文件数据之后,还包括:将所述关键字与目标磁盘文件数据移动至所述内存数据队列的首位;

相应的,所述将所述关键字及目标磁盘文件数据添加至所述内存数据队列中具体为:将所述关键字及目标磁盘文件数据插入至所述内存数据队列的首位;

以及,在所述将所述关键字及目标磁盘文件数据插入至所述内存数据队列的首位之后,还包括:判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过,如果否,则移除所述末位关键字和末位磁盘文件数据,如果是,则将所述末位磁盘文件数据更新至原始磁盘文件中再移除所述末位关键字和末位磁盘文件数据。

4.根据权利要求1所述的方法,其特征在于,所述依据所述当前计算机软件待读写的关键字,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中,包括:判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据,如果是,则直接更新所述目标磁盘文件数据;

如果否,则将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列中。

5.根据权利要求4所述的方法,其特征在于,所述直接更新所述目标磁盘文件数据之后,还包括:将所述关键字与对应的目标磁盘文件数据移动至所述内存数据队列的首位;

相应的,所述将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列中,具体为:将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列的首位;

以及,在所述将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列的首位之后,还包括:判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过,如果否,则将所述内存数据队列中的末位关键字和末位磁盘文件数据移除,如果是,则将所述末位磁盘文件数据更新至原始磁盘文件中再移除所述末位关键字和末位磁盘文件数据。

6.根据权利要求1~5任一项所述的方法,其特征在于,还包括:当更新周期到达时,依据当前内存数据队列更新磁盘中对应的二进制文件。

7.一种磁盘文件的读写装置,其特征在于,该装置包括:预处理单元和磁盘文件的读写单元,其中,所述预处理单元包括:

解析模块,用于在启动某一计算机软件时,将所述计算机软件在启动和运行过程中所需的磁盘文件按照对应的磁盘文件格式进行解析;

建立队列模块,用于将解析后的磁盘文件读取到内存中建立与所述磁盘文件对应的内存数据队列;所述内存数据队列保存有关键字和与所述关键字一一对应的磁盘文件数据;

存储模块,用于将所述内存数据队列保存为与所述计算机软件唯一对应的二进制文件存储至磁盘中;

所述磁盘文件的读写单元包括:

获取模块,用于在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件;

加载模块,用于将所述当前二进制文件加载至内存中以生成当前内存数据队列;

读取模块,用于依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据;

写入模块,用于依据所述当前计算机软件待读写的关键字,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中。

8.根据权利要求7所述的装置,其特征在于,所述读取模块包括:第一判断子模块,用于判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据;

第一读取子模块,用于在所述第一判断子模块的结果为是的情况下,直接读取所述目标磁盘文件数据;

获取子模块,用于在所述第一判断子模块的结果为否的情况下,获取与所述关键字对应的目标磁盘文件;

解析子模块,用于按照所述目标磁盘文件的格式对所述目标磁盘文件进行解析;

第二读取子模块,用于读取解析所述目标磁盘文件得到的目标磁盘文件数据;

第一添加子模块,用于将所述关键字及目标磁盘文件数据添加至所述内存数据队列中。

9.根据权利要求8所述的装置,其特征在于,所述读取模块还包括:第一移动子模块,用于将所述关键字与目标磁盘文件数据移动至所述内存数据队列的首位;

第二判断子模块,用于判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过;

第一更新子模块,用于在所述第二判断子模块的结果为是的情况下,将所述末位磁盘文件数据更新至原始磁盘文件中;

第一移除子模块,用于在所述第二判断子模块的结果为否的情况下,或者,在所述第一更新子模块触发之后,将所述内存数据队列中的末位关键字和末位磁盘文件数据移除;

所述第一添加子模块,具体用于:将所述关键字及目标磁盘文件数据插入至所述内存数据队列的首位。

10.根据权利要求7所述的装置,其特征在于,所述写入模块包括:第三判断子模块,用于判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据;

第二更新子模块,用于在所述第三判断子模块的结果为的情况下,直接更新所述目标磁盘文件数据;

插入子模块,用于在所述第三判断子模块的结果为否的情况下,将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列中。

11.根据权利要求10所述的装置,其特征在于,所述写入模块还包括:第二移动子模块,用于将所述关键字与对应的目标磁盘文件数据移动至所述内存数据队列的首位;

第四判断子模块,用于判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过;

第三更新子模块,用于在所述第四判断子模块的结果为是的情况下,将所述末位磁盘文件数据更新至原始磁盘文件中;

第二移除子模块,用于在所述第四判断子模块的结果为否的情况下,或者触发所述第三更新子模块之后,将所述内存数据队列中的末位关键字和末位磁盘文件数据移除;

所述插入子模块,具体用于:将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列的首位。

12.根据权利要求7~10任一项所述的装置,其特征在于,还包括:更新单元,用于当更新周期到达时,依据当前内存数据队列更新磁盘中对应的二进制文件。

说明书 :

一种磁盘文件的读写方法和装置

技术领域

[0001] 本申请涉及计算机系统的数据处理领域,特别涉及一种磁盘文件的读写方法和装置。

背景技术

[0002] 现有的计算机软件在启动和运行时,会有一些属性数据或者使用的文件等内容存放到磁盘中,一般将这些计算机软件中使用的且存放到磁盘中的数据或者文件等称为磁盘文件。磁盘文件的格式多种多样,例如XML(可扩展标记语言,Extensible Markup Language)格式文件、JASON格式文件、数据库文件或者图片文件等。而计算机软件在读取不同格式的文件时都需要按照不同格式对应的解析方法来获取磁盘文件中的数据到内存中。
[0003] 现有技术有一种进行磁盘文件的读写方法,每一次任一计算机软件在运行之后,在其需要读写磁盘文件的时候,再根据与该要读写的磁盘文件的格式对应的解析方法,例如,XML文件有XML的解析方法,数据库文件需要SQL方法来读写,把磁盘文件中的数据读取到内存中。其中,读写磁盘文件的速度取决于计算机软件对磁盘文件的解析速度。
[0004] 发明人在研究过程中发现,采用现有技术的方案,会使得计算机软件读写磁盘文件的时候因为每一次都需要根据磁盘文件的格式先进行解析,而使得读写磁盘文件的速度较慢,使得读写磁盘文件的效率比较低下。进一步的,当PC软件需要频繁访问某些磁盘文件,这些磁盘文件又需要通过各种解析方法才能将数据读取到内存中使用时,也会造成频繁解析磁盘文件中的数据的现象,这样会浪费很多不必要的系统性能。
[0005] 总之,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新的提出一种磁盘文件的读写方法,以解决现有技术中读写磁盘文件的效率比较低下的问题,进而提升磁盘文件的读写性能,降低系统性能的开销。

发明内容

[0006] 本申请所要解决的技术问题是提供一种磁盘文件的读写方法,用以解决现有技术中读写磁盘文件的效率比较低下的问题,进而提升磁盘文件的读写性能,降低系统性能的开销。
[0007] 本申请还提供了一种磁盘文件的读写装置,用以保证上述方法在实际中的实现及应用。
[0008] 为了解决上述问题,本申请公开了一种磁盘文件的读写方法,该方法包括预处理过程和磁盘文件的读写过程,其中,
[0009] 所述预处理过程包括:
[0010] 在启动某一计算机软件时,将所述计算机软件在启动和运行过程中所需的磁盘文件按照对应的磁盘文件格式进行解析,并将解析后的磁盘文件读取到内存中建立与所述磁盘文件对应的内存数据队列,将所述内存数据队列保存为与所述计算机软件唯一对应的二进制文件并存储至磁盘中;所述内存数据队列保存有一一对应的关键字与磁盘文件数据;
[0011] 所述磁盘文件的读写过程包括:
[0012] 在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件;
[0013] 将所述当前二进制文件加载至内存中以生成当前内存数据队列;
[0014] 依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据,或者,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中。
[0015] 优选的,所述依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据,包括:
[0016] 判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据,如果是,则直接读取所述目标磁盘文件数据;
[0017] 如果否,则获取与所述关键字对应的目标磁盘文件,按照所述目标磁盘文件的格式对所述目标磁盘文件进行解析,并读取解析所述目标磁盘文件得到的目标磁盘文件数据,并将所述关键字及目标磁盘文件数据添加至所述内存数据队列中。
[0018] 优选的,在所述直接读取所述目标磁盘文件数据之后,还包括:将所述关键字与目标磁盘文件数据移动至所述内存数据队列的首位;
[0019] 相应的,所述将所述关键字及目标磁盘文件数据添加至所述内存数据队列中具体为:将所述关键字及目标磁盘文件数据插入至所述内存数据队列的首位;
[0020] 以及,在所述将所述关键字及目标磁盘文件数据插入至所述内存数据队列的首位之后,还包括:
[0021] 判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过,如果否,则移除所述末位关键字和末位磁盘文件数据,如果是,则将所述末位磁盘文件数据更新至原始磁盘文件中再移除所述末位关键字和末位磁盘文件数据。
[0022] 优选的,所述依据所述当前计算机软件待读写的关键字,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中,包括:
[0023] 判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据,如果是,则直接更新所述目标磁盘文件数据;
[0024] 如果否,则将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列中。
[0025] 优选的,所述直接更新所述目标磁盘文件数据之后,还包括:将所述关键字与对应的目标磁盘文件数据移动至所述内存数据队列的首位;
[0026] 相应的,所述将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列中,具体为:将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列的首位;
[0027] 以及,在所述将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列的首位之后,还包括:
[0028] 判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过,如果否,则将所述内存数据队列中的末位关键字和末位磁盘文件数据移除,如果是,则将所述末位磁盘文件数据更新至原始磁盘文件中再移除所述末位关键字和末位磁盘文件数据。
[0029] 优选的,还包括:
[0030] 当更新周期到达时,依据当前内存数据队列更新磁盘中对应的二进制文件。
[0031] 本申请公开了一种磁盘文件的读写装置,包括:预处理单元和磁盘文件的读写单元,其中,
[0032] 所述预处理单元包括:
[0033] 解析模块,用于在启动某一计算机软件时,将所述计算机软件在启动和运行过程中所需的磁盘文件按照对应的磁盘文件格式进行解析;
[0034] 建立队列模块,用于将解析后的磁盘文件读取到内存中建立与所述磁盘文件对应的内存数据队列;所述内存数据队列保存有一一对应的关键字与磁盘文件数据;
[0035] 存储模块,用于将所述内存数据队列保存为与所述计算机软件唯一对应的二进制文件存储至磁盘中;
[0036] 所述磁盘文件的读写单元包括:
[0037] 获取模块,用于在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件;
[0038] 加载模块,用于将所述当前二进制文件加载至内存中以生成当前内存数据队列;
[0039] 读取模块,用于依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据;
[0040] 写入模块,用于依据所述当前计算机软件待读写的关键字,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中。
[0041] 优选的,所述读取模块包括:
[0042] 第一判断子模块,用于判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据;
[0043] 第一读取子模块,用于在所述第一判断子模块的结果为是的情况下,直接读取所述目标磁盘文件数据;
[0044] 获取子模块,用于在所述第一判断子模块的结果为否的情况下,获取与所述关键字对应的目标磁盘文件;
[0045] 解析子模块,用于按照所述目标磁盘文件的格式对所述目标磁盘文件进行解析;
[0046] 第二读取子模块,用于读取解析所述目标磁盘文件得到的目标磁盘文件数据;
[0047] 第一添加子模块,用于将所述关键字及目标磁盘文件数据添加至所述内存数据队列中。
[0048] 优选的,所述读取模块还包括:
[0049] 第一移动子模块,用于将所述关键字与目标磁盘文件数据移动至所述内存数据队列的首位;
[0050] 第二判断子模块,用于判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过;
[0051] 第一更新子模块,用于在所述第二判断子模块的结果为是的情况下,将所述末位磁盘文件数据更新至原始磁盘文件中;
[0052] 第一移除子模块,用于在所述第二判断子模块的结果为否的情况下,或者,在所述第一更新子模块触发之后,将所述内存数据队列中的末位关键字和末位磁盘文件数据移除;
[0053] 所述第一添加子模块,具体用于:将所述关键字及目标磁盘文件数据插入至所述内存数据队列的首位。
[0054] 优选的,所述写入模块包括:
[0055] 第三判断子模块,用于判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据;
[0056] 第二更新子模块,用于在所述第三判断子模块的结果为的情况下,直接更新所述目标磁盘文件数据;
[0057] 插入子模块,用于在所述第三判断子模块的结果为否的情况下,将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列中。
[0058] 优选的,所述写入模块还包括:
[0059] 第二移动子模块,用于将所述关键字与对应的目标磁盘文件数据移动至所述内存数据队列的首位;
[0060] 第四判断子模块,用于判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过;
[0061] 第三更新子模块,用于在所述第四判断子模块的结果为是的情况下,将所述末位磁盘文件数据更新至原始磁盘文件中;
[0062] 第二移除子模块,用于在所述第四判断子模块的结果为否的情况下,或者触发所述第三更新子模块之后,将所述内存数据队列中的末位关键字和末位磁盘文件数据移除;
[0063] 所述插入子模块,具体用于:将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列的首位。
[0064] 优选的,还包括:
[0065] 更新单元,用于当更新周期到达时,依据当前内存数据队列更新磁盘中对应的二进制文件。
[0066] 与现有技术相比,本申请包括以下优点:
[0067] 在本申请中,通过预处理方式,在后续启动该计算机软件的时候,就可以从磁盘中加载与其唯一对应的二进制文件,而该二进制文件因为是已经解析过的各个磁盘文件,所以可以直接进行读写,而不再需要每一次启动计算机软件之后都需要在读写磁盘文件的时候对磁盘文件进行解析。可见本申请通过二进制文件作为磁盘文件的二级缓存,即提高了计算机软件读写磁盘文件的速度,提升了计算机软件读写磁盘文件的效率,也解决了频繁访问磁盘IO(输入/输出,Input/Output)以及以解析磁盘文件的数据的问题,降低了系统计算性能的开销。
[0068] 实施本申请对计算机软件是透明的,使得计算机软件读写磁盘文件的数据更加简单。而内存数据队列中的数据又可以根据计算机软件对数据的使用频率生成,所以计算机软件需要的绝大部分数据可以直接从内存数据队列中读到,这样也会大大减少对磁盘IO的访问,提高很多磁盘文件的读写性能,提升磁盘文件的读写效率。此外,由于内存数据队列和二进制文件的数据已经建立了一套(key\value)的数据结构,所以上层业务层中的计算机软件需要调用数据时,只需要输入key(关键字)就可以得到相应的value(目标磁盘文件数据),不用关心磁盘文件的位置、具体结构和解析方式,使得对磁盘文件中的数据调用非常方便和透明,简化了上层业务调用数据的过程。
[0069] 当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

[0070] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0071] 图1是本申请的一种磁盘文件的读写方法实施例1的流程图;
[0072] 图2是本申请实施例1中读取磁盘文件的流程图;
[0073] 图3是本申请实施例1中写入磁盘文件的流程图;
[0074] 图4是本申请的一种磁盘文件的读写方法实施例2的流程图;
[0075] 图5是本申请的一种磁盘文件的读写方法实施例3的流程图;
[0076] 图6是本申请的一种磁盘文件的读写装置实施例1的结构框图;
[0077] 图7是本申请装置实施例1中读取模块606的结构框图;
[0078] 图8是本申请装置实施例1中写入模块607的结构框图
[0079] 图9是本申请的一种磁盘文件的读写装置实施例2的结构框图;
[0080] 图10是本申请的一种磁盘文件的读写装置实施例3的结构框图。

具体实施方式

[0081] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0082] 本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
[0083] 本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0084] 本申请的主要思想之一可以包括,在计算机软件首次启动的时候,就将该计算机软件在启动和运行过程中所需的各个磁盘文件按照对应的各个磁盘文件格式进行解析,并将解析后的各个磁盘文件读取到内存中建立与所述各个磁盘文件对应的内存数据队列,再将所述内存数据队列保存为与所述任一计算机软件唯一对应的二进制文件存储至磁盘中,其中内存数据队列保存有一一对应的关键字与磁盘文件数据。通过上述的预处理方式,在下一次启动该计算机软件的时候,就可以从磁盘中加载与其唯一对应的二进制文件,而该二进制文件因为是已经解析过的各个磁盘文件,所以可以直接进行读写,而不再需要每一次启动计算机软件之后都需要在读写磁盘文件的时候对磁盘文件进行解析。可见本申请通过二进制文件作为磁盘文件的二级缓存,即提高了计算机软件读写磁盘文件的速度,提升了计算机软件读写磁盘文件的效率,也解决了频繁访问磁盘IO(输入/输出,Input/Output)以及以解析磁盘文件的数据的问题,降低了系统计算性能的开销。
[0085] 参考图1,示出了本申请一种磁盘文件的读写方法实施例1的流程图,本实施例包括预处理过程和磁盘文件的读写过程,其中,预处理过程为步骤101~步骤103,磁盘文件的读写过程包括步骤104~步骤106,本实施例可以包括以下步骤:
[0086] 步骤101:在首次启动某一计算机软件时,将所述计算机软件在启动和运行过程中所需的磁盘文件按照对应的磁盘文件格式进行解析。
[0087] 在本实施例中,如果计算机上安装了某个软件,那么在第一次启动该计算机软件的时候,在其启动过程中需使用的数据所在的磁盘文件会被预先进行解析,并且在其后续运行过程中,使其能够正常运行的数据所在的磁盘文件中也会被预先进行解析才能正常读取。因此,本实施例构建的磁盘文件的读写装置,可以实现每一个计算机软件首次启动的时候,将该计算机软件在本次启动和运行过程中所需的各个磁盘文件按照对应的各个磁盘文件格式进行解析的目的。本申请实施例对某一计算机软件在启动或运行过程中对所需的磁盘文件进行解析,并不表示是对所有的磁盘文件都进行解析,本领域技术人员可以理解的是可以只对其中的某个/某些磁盘文件进行解析,或只对某一磁盘文件中的某个或某些数据进行解析,本申请对此并不做限定。
[0088] 例如,对于阿里旺旺这个即时通信软件来讲,在第一次启动阿里旺旺的时候,会有一些配置信息保存在磁盘文件中,例如阿里旺旺的运行界面、显示大小等属性数据,以及在阿里旺旺运行过程中,客户端之间的即时通信记录等信息也需要保存在磁盘文件中,这些磁盘文件就都会在本步骤中对其进行解析。
[0089] 步骤102:将解析后的磁盘文件读取到内存中建立与所述磁盘文件对应的内存数据队列。
[0090] 在对计算机软件启动和运行过程中所需的各个磁盘文件按照对应的各个磁盘文件格式进行解析之后,将解析后的各个磁盘文件读取到内存中,以在内存中建立与各个磁盘文件对应的内存数据队列。其中,该内存数据队列保存有一一对应的关键字与磁盘文件数据,即是以key-value(关键字-磁盘文件数据)的结构方式保存关键字与对应的解析后的磁盘文件数据。其中,关键字可以理解为当前磁盘文件数据区别于其他磁盘文件数据的唯一标识,而对应的当前磁盘文件数据则是计算机软件所需要读写的内容,有了关键词,即可查找到对应的当前磁盘文件数据。
[0091] 在建立该内存数据队列时,可以按照某一特定顺序对其中的关键字-磁盘文件数据对进行排序,例如,按照磁盘文件数据在当前启动和运行过程中的使用频率进行排序,即是将使用频率高的磁盘文件数据放在内存数据队列的首位,并依次按照使用频率的大小生成关键字-磁盘文件数据对,使用频率最低的磁盘文件数据则放在内存数据队列的末位。当然,本领域技术人员也可以根据需求按照其他参数对内存数据队列中的key-value对进行排序。
[0092] 可以理解的是,该内存数据队列的长度也可以预先设置,例如,将key和value的预设长度分别设置为4字节,则一对key和value所占长度即是8字节。不过,内存数据队列中key和value的长度虽然可以预先设置,但是长度大小是可以调整的,本领域技术人员依然可以依据需求对其进行自主设置。
[0093] 步骤103:将所述内存数据队列保存为与所述计算机软件唯一对应的二进制文件存储至磁盘中。
[0094] 在建立内存数据队列之后,再将其保存为一个二进制文件存储至磁盘中,因为对于任一个计算机软件来讲,只会建立一个内存数据队列,因此,一个计算机软件也就唯一对应一个二进制文件。具体的,在将内存数据队列保存为与计算机软件一一对应的二进制文件时,可以根据内存数据队列的key和value的长度生成二进制文件,即是按照内存数据队列中的顺序依次将key和value对按照其固定长度作为二进制文件中的内容。
[0095] 假设内存数据队列中的key和value对的固定长度为8字节,那么后续在读取内存数据队列的时候,也以8字节为单位长度进行读取,这样就保证每一次都能读取到一个关键字对应的磁盘文件中的数据。其中,二进制文件的可读性、易用性比较低,由于二进制文件的数据内容是根据用户所需的内存数据队列的数据结构直接写入的,所以后续如果读取二进制文件则不需要再进行解析,可以直接将二进制文件读入内存。
[0096] 需要说明的是,再将内存数据队列保存为二进制文件的时候,可以选取内存数据队列前N(N的取值可以根据计算机软件使用磁盘文件的多少自主设置,例如前50个)位的key和value对直接生成一份二进制文件。
[0097] 其中,步骤101~步骤103为预处理步骤,对于一个计算机软件来讲,只有在其经过步骤101~步骤103的预处理步骤之后,才能进行步骤104~步骤106的磁盘文件的读写过程,但是对于同一个计算机软件来讲,步骤101~步骤103的预处理过程执行一次即可,后续可以实时对二进制文件进行更新。
[0098] 步骤104:在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件。
[0099] 针对已经生成二进制文件的当前计算机软件,当其第二次或者后续每一次启动时,直接从磁盘中获取该当前计算机软件唯一对应的二进制文件。
[0100] 步骤105:将所述当前二进制文件加载至内存中以生成当前内存数据队列。
[0101] 直接将步骤104中获取到的二进制文件加载即是直接拷贝至内存中,即可生成与当前计算机软件对应的当前内存数据队列。具体的,在将二进制文件加载为内存中的内存数据队列的时候,可以根据预先设定的内存数据队列的key和value对的固定长度进行加载,例如,按照8字节的单位长度将二进制文件中的数据依次作为内存数据队列中的key和value对。需要说明的是,因为生成二进制文件的时候,是按照内存数据队列的顺序进行的,所以此时只需要按照key和value对的固定长度依次读取二进制文件,再按照读取的顺序建立内存数据队列,就会生成与预处理过程中建立的内存数据队列一样的内容。
[0102] 步骤106:依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据,或者,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中。
[0103] 对于当前计算机软件待读写的一个关键词,如果是读取操作,则可以直接从步骤105加载的内存数据队列中读取与该关键字对应的目标磁盘文件数据(即是value值),如果是写入操作,则可以将该关键字对应的目标磁盘文件数据直接写入所述当前内存数据队列中。
[0104] 在实际应用中,参考图2所示,依据当前计算机软件待读取的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据,具体可以包括:
[0105] 步骤201:判断所述内存数据队列中是否存在与所述待读取的关键字对应的目标磁盘文件数据,如果是,则进入步骤202,如果否,则进入步骤203;
[0106] 图2是读取磁盘文件的流程图。先判断内存数据队列中是否存在与待读取的关键字对应的目标磁盘文件数据,如果存在,则说明内存数据队列中已经有计算机软件需要读取的数据,则可以执行步骤202,而如果不存在,则说明内存数据队列中并没有计算机软件需要读取的数据,则执行步骤203~步骤206。
[0107] 步骤202:直接读取所述目标磁盘文件数据;
[0108] 直接从内存数据队列中读取与关键字对应的目标磁盘文件数据,再返回给计算机软件;
[0109] 步骤203:获取与所述关键字对应的目标磁盘文件;
[0110] 先获得与该关键字对应的在磁盘中的目标磁盘文件;
[0111] 步骤204:按照所述目标磁盘文件的格式对所述目标磁盘文件进行解析;
[0112] 因为目标磁盘文件数据并未在内存数据队列中,则说明该目标磁盘文件还未进行解析,此时需要按照目标磁盘文件的格式对该目标磁盘文件进行解析;
[0113] 步骤205:读取解析所述目标磁盘文件得到的目标磁盘文件数据;
[0114] 在目标磁盘文件解析之后可以读取解析目标磁盘文件得到的目标磁盘文件数据,再将其返回给计算机软件;
[0115] 步骤206:将所述关键字及目标磁盘文件数据添加至所述内存数据队列中。
[0116] 最后还需要将关键字与解析得到的目标磁盘文件数据作为一个key-value对添加至内存数据队列中。这样才能保证下一次再需要读取该目标磁盘文件数据的时候,不需要再解析该目标磁盘文件,从而实现提高磁盘文件的读写速度的目的。
[0117] 参考图3所示,依据当前计算机软件待写入的关键字,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中,可以包括:
[0118] 步骤301:判断所述内存数据队列中是否存在与所述待写入的关键字对应的目标磁盘文件数据,如果是,则进入步骤302,如果否,则进入步骤303;
[0119] 图3是写入磁盘文件的流程图。先判断内存数据队列中是否存在与待写入的关键字对应的目标磁盘文件数据,如果存在,则说明内存数据队列中已经有计算机软件需要写入的数据,则可以执行步骤302,而如果不存在,则说明内存数据队列中并没有计算机软件需要读取的数据,则执行步骤303~步骤203。
[0120] 步骤302:直接更新所述目标磁盘文件数据;
[0121] 直接更新内存数据队列中已经存在的目标磁盘文件数据,实现将数据写入磁盘文件的目的;
[0122] 步骤303:将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列中。
[0123] 将关键字与对应的目标磁盘文件数据插入至内存数据队列中。
[0124] 采用本申请实施例,先将磁盘文件通过相应的解析方法,将磁盘文件中的数据读取到内存并建立一个(key-value)的结构方式的内存数据队列,还可以按照预设规则调整内存数据队列的顺序,并将内存数据队列保存为与计算机软件对应的二进制文件,在下一次启动计算机软件时,需要将二进制文件的数据拷贝到内存中直接生成内存数据队列,此时计算机软件在需要读写磁盘文件时,由本申请直接从内存数据队列进行读写即可,不再需要每一次启动计算机软件之后都需要在读写磁盘文件的时候对磁盘文件进行解析。可见本申请通过二进制文件作为磁盘文件的二级缓存,即提高了计算机软件读写磁盘文件的速度,提升了计算机软件读写磁盘文件的效率。
[0125] 进一步的,由于二进制文件中的数据可以根据计算机软件的使用频率生成,这样绝大多数计算机软件使用的磁盘文件都可以直接读取到,极大得加快了计算机软件读取磁盘文件的速度。
[0126] 参考图4,示出了本申请一种磁盘文件的读写方法实施例2的流程图,本实施例是在预处理过程之后,实现计算机软件对磁盘文件进行读取的方法,本实施例可以包括以下步骤:
[0127] 步骤401:在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件。
[0128] 步骤402:将所述当前二进制文件加载至内存中以生成当前内存数据队列。
[0129] 步骤401~步骤402的具体实现可以参考实施例1,在此不再赘述。
[0130] 步骤403:判断所述内存数据队列中是否存在与所述待读取的关键字对应的目标磁盘文件数据,如果是,则进入步骤404,如果否,则进入步骤405。
[0131] 当计算机软件需要读取某关键字对应的磁盘文件数据时,会先去内存数据队列中读取,则需要先判断内存数据队列中是否存在与所述待读取的关键字对应的目标磁盘文件数据。
[0132] 步骤404:直接读取所述目标磁盘文件数据,将所述关键字与目标磁盘文件数据移动至所述内存数据队列的首位。
[0133] 如果内存数据队列中有,就直接读取所述目标磁盘文件数据并返回给计算机软件。
[0134] 本实施例与实施例1不同之处在于,在读取关键字对应的目标磁盘文件数据之后,将该关键字和目标磁盘文件数据移动到内存数据队列的首位。因为当前执行了一次对该关键字和目标磁盘文件数据的读取操作,则说明该关键字和目标磁盘文件数据的读取次数增加了一次,因此,将其对应的移动到内存数据队列的首位,以方便下一次的读取。
[0135] 步骤405:获取与所述关键字对应的目标磁盘文件,按照所述目标磁盘文件的格式对所述目标磁盘文件进行解析。
[0136] 如果内存数据队列中没有,则需要先获取磁盘上保存的该关键字对应的磁盘文件,再对该磁盘文件进行相应格式的解析。
[0137] 步骤406:读取解析所述目标磁盘文件得到的目标磁盘文件数据。
[0138] 步骤407:将所述关键字及目标磁盘文件数据插入至所述内存数据队列的首位。
[0139] 本实施例与实施例1的不同之处在于,在读取解析所述目标磁盘文件得到的目标磁盘文件数据返回给计算机软件之后,还将该关键字及目标磁盘文件数据插入至所述内存数据队列的首位,以方便下一次的读取。
[0140] 步骤408:判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过,如果否,则进入步骤410,如果是,则进入步骤409。
[0141] 在本实施例中,内存数据队列中的关键字和磁盘文件数据对可以设置对应的标记位,该标记位用来表示一个关键字和磁盘文件数据对是否被更新过,这里的更新可以理解为磁盘文件中所存储的数据与内存数据队列中的磁盘文件数据是否一致。例如,将磁盘文件中的数据对应建立内存数据队列的时候,先把标记位对应置为0,说明内存数据队列中的数据即是原始磁盘文件中的数据,而一旦后续对内存数据队列中的数据进行更新了,则此时因为只更新的内存数据队列,所以原始磁盘文件中的数据就未同步更新,因此,如果该数据需要移除内存数据队列的时候,就先判断是否进行过更新。
[0142] 步骤409:将所述末位磁盘文件数据更新至原始磁盘文件中,进入步骤410。
[0143] 如果内存数据队列中的末位磁盘文件数据的标记位为1,则可以说明其进行更新过,此时就先将末位磁盘文件数据更新至原始磁盘文件中,再将其从内存数据队列中移除。
[0144] 步骤410:将所述内存数据队列中的末位关键字和末位磁盘文件数据移除。
[0145] 如果末位磁盘文件数据的标记位为0,则说明其未进行过更新,即是与原始磁盘文件中保存的数据一致,则此时直接将内存数据队列末位的数据(末位关键字和末位磁盘文件数据)取出并移除。这样可以保证内存数据队列总的长度不变,磁盘文件数据的实时性,以及磁盘文件和内存数据队列的一致。
[0146] 步骤411:当更新周期到达时,依据当前内存数据队列更新磁盘中对应的二进制文件。
[0147] 本实施例中还可以包括对二进制文件的更新,例如设置更新周期为半小时,那么每隔半个小时,则可以将当前内存数据队列生成的新的二进制文件替换磁盘中对应的旧的二进制文件,以便下次可以直接读取到内存中。
[0148] 在本实施例中,不仅可以保证内存数据队列的长度不变,且能将最新一次读取的目标磁盘文件数据移动至内存数据队列的首位,从而使得最近读取的目标磁盘文件数据可以最快的从内存数据队列中读取到,并且,在还可以按照预设的更新周期对二进制文件进行更新,保证了二进制文件的实时性。
[0149] 参考图5,示出了本申请一种磁盘文件的读写方法实施例3的流程图,本实施例是在预处理过程之后,实现计算机软件对磁盘文件进行写入的方法,在本实施例中,可以包括以下步骤:
[0150] 步骤501:在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件。
[0151] 步骤502:将所述当前二进制文件加载至内存中以生成当前内存数据队列。
[0152] 步骤501~步骤502的具体实现可以参考实施例1,在此不再赘述。
[0153] 步骤503:判断所述内存数据队列中是否存在与所述待写入的关键字对应的目标磁盘文件数据,如果是,则进入步骤504,如果否,则进入步骤505。
[0154] 当计算机软件需要写入某关键字对应的磁盘文件数据时,会先判断内存数据队列中是否存在与该待写入的关键字对应的目标磁盘文件数据,
[0155] 步骤504:直接更新所述目标磁盘文件数据,将所述关键字与对应的目标磁盘文件数据移动至所述内存数据队列的首位。
[0156] 如果内存数据队列中有,就直接更新所述目标磁盘文件数据,即是将待写入的目标磁盘文件数据直接替换原内存数据队列中存在的目标磁盘文件数据。
[0157] 本实施例与实施例1不同之处在于,在更新所述目标磁盘文件数据之后,将该关键字和目标磁盘文件数据移动到内存数据队列的首位。因为当前执行了一次对该关键字和目标磁盘文件数据的写入操作,则说明该关键字和目标磁盘文件数据的写入次数增加了一次,因此,将其对应的移动到内存数据队列的首位,以方便下一次的写入。
[0158] 步骤505:将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列的首位。
[0159] 本实施例与实施例1的不同之处在于,如果内存数据队列中没有,则需要将该关键字和目标磁盘文件数据插入到数据队列的首位,以方便下一次的写入。
[0160] 步骤506:判断所述内存数据队列中的末位关键字和末位磁盘文件对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过,如果否,则进入步骤508,如果是,则进入步骤507。
[0161] 步骤507:将所述末位磁盘文件数据更新至原始磁盘文件中。
[0162] 步骤508:将所述内存数据队列中的末位关键字和末位磁盘文件数据移除。
[0163] 本实施例与实施例1的不同之处在于,在写入关键字及对应的目标磁盘文件数据之后,如果末位磁盘文件数据未进行过更新,则直接然后将内存数据队列末位的数据(末位关键字和末位磁盘文件数据)取出并移除,如果末位磁盘文件数据进行过更新,则先将末位的数据更新至原始磁盘文件中再将其移除。这样可以保证内存数据队列总的长度不变,磁盘文件数据的实时性,以及磁盘文件和内存数据队列的一致。
[0164] 步骤509:当更新周期到达时,依据当前内存数据队列更新磁盘中对应的二进制文件。
[0165] 步骤509可以参考实施例2的描述,在此不再赘述。
[0166] 在本实施例中,不仅可以保证内存数据队列的长度不变,且能将最新一次写入的目标磁盘文件数据移动至内存数据队列的首位,从而使得最近读取的目标磁盘文件数据可以最快的从内存数据队列中写入,并且,在还可以按照预设的更新周期对二进制文件进行更新,保证了二进制文件的实时性。
[0167] 对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0168] 与上述本申请一种磁盘文件的读写方法实施例1所提供的方法相对应,参见图6,本申请还提供了一种磁盘文件的读写装置实施例1,在本实施例中,该装置可以包括:预处理单元60和磁盘文件的读写单元61,其中,所述预处理单元60可以包括:
[0169] 解析模块601,用于在首次启动某一计算机软件时,将所述计算机软件在启动和运行过程中所需的磁盘文件按照对应的磁盘文件格式进行解析。
[0170] 建立队列模块602,用于将解析后的磁盘文件读取到内存中建立与所述磁盘文件对应的内存数据队列;所述内存数据队列保存有一一对应的关键字与磁盘文件数据。
[0171] 存储模块603,用于将所述内存数据队列保存为与所述计算机软件唯一对应的二进制文件存储至磁盘中。
[0172] 所述磁盘文件的读写单元61可以包括:
[0173] 获取模块611,用于在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件。
[0174] 加载模块612,用于将所述当前二进制文件加载至内存中以生成当前内存数据队列。
[0175] 读取模块613,用于依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据。
[0176] 参考图7所示,图7为所述读取模块606的结构框图,所述读取模块606具体可以包括:
[0177] 第一判断子模块701,用于判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据;
[0178] 第一读取子模块702,用于在所述第一判断子模块的结果为是的情况下,直接读取所述目标磁盘文件数据;
[0179] 获取子模块703,用于在所述第一判断子模块的结果为否的情况下,获取与所述关键字对应的目标磁盘文件;
[0180] 解析子模块704,用于按照所述目标磁盘文件的格式对所述目标磁盘文件进行解析;
[0181] 第二读取子模块705,用于读取解析所述目标磁盘文件得到的目标磁盘文件数据;
[0182] 第一添加子模块706,用于将所述关键字及目标磁盘文件数据添加至所述内存数据队列中。
[0183] 写入模块607,用于依据所述当前计算机软件待读写的关键字,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中。
[0184] 参考图8所示,图8为所述写入模块607的结构框图,所述写入模块607具体可以包括:
[0185] 第二判断子模块801,用于判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据;
[0186] 更新子模块802,用于在所述第二判断子模块的结果为的情况下,直接更新所述目标磁盘文件数据;
[0187] 插入子模块803,用于在所述第二判断子模块的结果为否的情况下,将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列中。
[0188] 采用本申请实施例,先将磁盘文件通过相应的解析方法,将磁盘文件中的数据读取到内存并建立一个(key-value)的结构方式的内存数据队列,还可以按照预设规则调整内存数据队列的顺序,并将内存数据队列保存为与计算机软件对应的二进制文件,在下一次启动计算机软件时,需要将二进制文件的数据拷贝到内存中直接生成内存数据队列,此时计算机软件在需要读写磁盘文件时,由本申请直接从内存数据队列进行读写即可,不再需要每一次启动计算机软件之后都需要在读写磁盘文件的时候对磁盘文件进行解析。可见本申请通过二进制文件作为磁盘文件的二级缓存,即提高了计算机软件读写磁盘文件的速度,提升了计算机软件读写磁盘文件的效率。
[0189] 进一步的,由于二进制文件中的数据可以根据计算机软件的使用频率生成,这样绝大多数计算机软件使用的磁盘文件都可以直接读取到,极大得加快了计算机软件读取磁盘文件的速度。
[0190] 与上述本申请一种磁盘文件的读写方法实施例2所提供的方法相对应,参见图9,本申请还提供了一种磁盘文件的读写装置实施例2,本实施例公开的装置所包括的预处理单元60和磁盘文件的读写单元61,在本实施例中,磁盘文件的读写单元61可以包括:
[0191] 获取模块604,用于在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件。
[0192] 加载模块605,用于将所述当前二进制文件加载至内存中以生成当前内存数据队列。
[0193] 读取模块606,用于依据所述当前计算机软件待读写的关键字,从所述当前内存数据队列中读取与所述关键字对应的目标磁盘文件数据。
[0194] 其中,所述读取模块606具体可以包括:
[0195] 第一判断子模块701,用于判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据;
[0196] 第一读取子模块702,用于在所述第一判断子模块的结果为是的情况下,直接读取所述目标磁盘文件数据;
[0197] 获取子模块703,用于在所述第一判断子模块的结果为否的情况下,获取与所述关键字对应的目标磁盘文件;
[0198] 解析子模块704,用于按照所述目标磁盘文件的格式对所述目标磁盘文件进行解析;
[0199] 第二读取子模块705,用于读取解析所述目标磁盘文件得到的目标磁盘文件数据;
[0200] 第一添加子模块706,将所述关键字及目标磁盘文件数据插入至所述内存数据队列的首位。
[0201] 第一移动子模块901,用于将所述关键字与目标磁盘文件数据移动至所述内存数据队列的首位;
[0202] 第二判断子模块902,用于判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过;
[0203] 第一更新子模块903,用于在所述第二判断子模块的结果为是的情况下,将所述末位磁盘文件数据更新至原始磁盘文件中;
[0204] 第一移除子模块904,用于在所述第二判断子模块的结果为否的情况下,或者,在所述第一更新子模块触发之后,将所述内存数据队列中的末位关键字和末位磁盘文件数据移除;
[0205] 存储子模块905,用于将所述末位磁盘文件数据存放至磁盘中。
[0206] 所述装置还可以包括:
[0207] 更新单元906,用于当更新周期到达时,依据当前内存数据队列更新磁盘中对应的二进制文件。
[0208] 在本实施例中,不仅可以保证内存数据队列的长度不变,且能将最新一次读取的目标磁盘文件数据移动至内存数据队列的首位,从而使得最近读取的目标磁盘文件数据可以最快的从内存数据队列中读取到,并且,在还可以按照预设的更新周期对二进制文件进行更新,保证了二进制文件的实时性。
[0209] 与上述本申请一种磁盘文件的读写方法实施例3所提供的方法相对应,参见图10,本申请还提供了一种磁盘文件的读写装置实施例3,本实施例公开的装置所包括的预处理单元60和磁盘文件的读写单元61,在本实施例中,磁盘文件的读写单元61可以包括:
[0210] 获取模块604,用于在后续启动当前计算机软件时,从磁盘中获取所述当前计算机软件唯一对应的当前二进制文件。
[0211] 加载模块605,用于将所述当前二进制文件加载至内存中以生成当前内存数据队列。
[0212] 写入模块607,用于依据所述当前计算机软件待读写的关键字,将所述关键字对应的目标磁盘文件数据写入所述当前内存数据队列中。
[0213] 所述写入模块607具体可以包括:
[0214] 第二判断子模块801,用于判断所述内存数据队列中是否存在与所述待读写的关键字对应的目标磁盘文件数据;
[0215] 更新子模块802,用于在所述第二判断子模块的结果为的情况下,直接更新所述目标磁盘文件数据;
[0216] 所述插入子模块803,具体用于:将所述关键字及对应的目标磁盘文件数据插入至所述内存数据队列的首位。
[0217] 第二移动子模块1001,用于将所述关键字与对应的目标磁盘文件数据移动至所述内存数据队列的首位;
[0218] 第四判断子模块1002,用于判断所述内存数据队列中的末位关键字和末位磁盘文件数据对应的标记位是否表示所述末位关键字和末位磁盘文件数据被更新过;
[0219] 第三更新子模块1003,用于在所述第四判断子模块的结果为是的情况下,将所述末位磁盘文件数据更新至原始磁盘文件中;
[0220] 第二移除子模块1004,用于在所述第四判断子模块的结果为否的情况下,或者触发所述第三更新子模块之后,将所述内存数据队列中的末位关键字和末位磁盘文件数据移除;
[0221] 所述装置还可以包括:
[0222] 更新单元906,用于当更新周期到达时,依据当前内存数据队列更新磁盘中对应的二进制文件。
[0223] 在本实施例中,不仅可以保证内存数据队列的长度不变,且能将最新一次写入的目标磁盘文件数据移动至内存数据队列的首位,从而使得最近读取的目标磁盘文件数据可以最快的从内存数据队列中写入,并且,在还可以按照预设的更新周期对二进制文件进行更新,保证了二进制文件的实时性。
[0224] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0225] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0226] 以上对本申请所提供的一种磁盘文件的读写方法和装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。