CN113204549A - 数据存储方法、数据读取方法、装置、终端及存储介质 - Google Patents

数据存储方法、数据读取方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN113204549A
CN113204549A CN202110426433.3A CN202110426433A CN113204549A CN 113204549 A CN113204549 A CN 113204549A CN 202110426433 A CN202110426433 A CN 202110426433A CN 113204549 A CN113204549 A CN 113204549A
Authority
CN
China
Prior art keywords
data
directory
file
target
data structure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110426433.3A
Other languages
English (en)
Inventor
徐强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202110426433.3A priority Critical patent/CN113204549A/zh
Publication of CN113204549A publication Critical patent/CN113204549A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Abstract

本公开是关于一种数据存储方法、数据读取方法、装置、终端及存储介质,属于计算机技术领域。该方法包括:对待存储的目标数据进行序列化处理,得到所述目标数据对应的数据流;确定所述目标数据的数据结构对应的文件目录,所述文件目录包括多级目录,且所述文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的;将所述数据流存储至所述文件名称对应的数据文件中。该方法中数据结构对应的文件目录为多级目录,将数据文件存储在以数据结构对应的文件名称命名的目录下,避免了将不同数据结构的数据文件存储在同一目录下,且只要目标数据可序列化即可进行存储,因此可存储的数据结构更加多样。

Description

数据存储方法、数据读取方法、装置、终端及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法、数据读取方法、装置、终端及存储介质。
背景技术
随着计算机技术和应用的日益更新,应用的功能越来越多,产生的数据也越来越多样。终端会将运行应用的过程中产生的数据存储在本地,便于下次启动应用时直接使用。相关技术中,终端会设置应用对应的目录,将该应用的数据存储于该目录下,这会导致同一目录下存储过多的数据。
发明内容
本公开提供了一种数据存储方法、数据读取方法、装置、终端及存储介质,提高了数据读取效率。
根据本公开实施例的一方面,提供一种数据存储方法,所述数据存储方法包括:
对待存储的目标数据进行序列化处理,得到所述目标数据对应的数据流;
确定所述目标数据的数据结构对应的文件目录,所述文件目录包括多级目录,且所述文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的;
将所述数据流存储至所述文件名称对应的数据文件中。
本公开实施例提供的方法,由于目标数据的数据结构对应的文件目录为多级目录,且其中一级目录是以数据结构对应的文件名称来命名的,将数据文件存储在以该文件名称命名的目录下,避免了将不同数据结构对应的数据文件存储在同一目录下。将可序列化的目标数据转换为数据流,以数据流的形式存储至文件名称对应的数据文件中,无论是任一数据结构的目标数据,只要可序列化即可进行存储,因此可存储的数据结构更加多样。
在一些实施例中,所述对所述目标数据进行序列化处理,得到所述目标数据对应的数据流,包括:
响应于所述目标数据的数据结构与目标接口关联,对所述目标数据进行序列化处理,得到所述数据流;
其中,与所述目标接口关联的数据结构对应的数据可序列化。
本公开实施例中,根据数据结构是否与目标接口关联,来确定目标数据是否为可序列化的数据,即采用目标接口来指示数据结构对应的数据是否可序列化,能够方便地确定是否能够存储目标数据。
在一些实施例中,所述对所述目标数据进行序列化处理,得到所述目标数据对应的数据流,包括:
调用对象输出流,对所述目标数据进行序列化处理,得到所述数据流,所述对象输出流用于将任一数据转换为对应的数据流。
本公开实施例中,调用对象输出流对目标数据进行序列化处理,将目标数据转换为可存储的数据形式,方便后续对数据进行存储。
在一些实施例中,所述确定所述目标数据的数据结构对应的文件目录之前,所述数据存储方法还包括:
通过目标应用,向操作系统发送数据存储请求;
通过所述操作系统,接收所述数据存储请求,响应于所述数据存储请求,在所述操作系统的内存空间中创建所述目标应用对应的一级目录。
本公开实施例中,在操作系统的内存空间中创建目标应用对应的一级目录,后续该目标应用对应的数据即可存储在该一级目录下,与相关技术中的SP存储方式相比,避免了存储空间的限制。
在一些实施例中,所述确定所述目标数据的数据结构对应的文件目录,包括:
确定所述目标数据所属的目标应用对应的文件目录,所述文件目录至少包括一级目录;
响应于在所述一级目录下不存在第一目录,在所述一级目录下创建所述第一目录,所述第一目录是以所述目标数据的数据结构对应的文件名称命名的。
本公开实施例中,在不存在以数据结构对应的文件名称命名的目录的情况下,在一级目录下创建以数据结构对应的文件名称命名的目录,得到多级目录,后续基于创建的以文件名称命名的目录来指示对应的数据文件,便于基于目录来查询数据文件,且在多级目录的情况下,避免了将数据文件直接存储在一级目录下。
在一些实施例中,所述确定所述目标数据的数据结构对应的文件目录,包括:
确定所述目标数据所属的目标应用对应的文件目录,所述文件目录至少包括一级目录;
响应于在所述一级目录下不存在第二目录,在所述一级目录下创建所述第二目录,所述第二目录是指以所述数据结构对应的文件名称命名的目录的上一级目录;
在所述第二目录下创建第三目录,所述第三目录是以所述数据结构对应的文件名称命名的。
本公开实施例中,在不存在以数据结构对应的文件名称命名的目录的上一级目录的情况下,在一级目录下创建对应的下一级目录,并在下一级目录下继续创建以文件名称命名的目录,得到多级目录,后续基于创建的以文件名称命名的目录来指示对应的数据文件,便于基于目录来查询数据文件。
在一些实施例中,所述将所述数据流存储至所述文件名称对应的数据文件中,包括:
响应于所述数据流的数据量不超过操作系统的内存空间的最大数据量,将所述数据流存储至所述数据文件中。
本公开实施例中,只要存储的数据流的数据量不超过内存空间的最大数据流,即可对数据流进行存储,与相关技术中的SP存储方式相比,能够存储更大的数据量。
在一些实施例中,所述确定所述目标数据的数据结构对应的文件目录,包括:
从所述目标数据所属的目标应用的数据库中,查询所述目标数据的数据结构对应的文件目录,所述数据库用于存储所述目标应用的至少一种数据结构对应的文件目录。
本公开实施例中,通过查询数据库即可确定目标数据的数据结构是否已经创建文件目录,在已创建的情况下,可以从数据库中查询到该数据结构对应的文件目录,后续即可基于该文件目录对目标数据进行存储。
根据本公开实施例的再一方面,提供一种数据读取方法,所述数据读取方法包括:
响应于携带数据结构的数据读取指令,从数据库中查询所述数据结构对应的目标文件目录,所述目标文件目录包括多级目录,且所述目标文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的,所述数据库用于存储至少一种数据结构对应的文件目录;
从已创建的目录中,依次查询所述目标文件目录中的每级目录,直至查询到以所述文件名称命名的目录;
基于以所述文件名称命名的目录,读取所述文件名称对应的数据文件。
本公开实施例提供的方法,在读取数据的过程中,只需要按照目标文件目录中的每级目录,查找到以该文件名称命名的目录,即可查询到该文件名称对应的数据文件,而无需遍历每一级目录中的数据文件,减少了遍历的数据文件数量,提高了数据读取效率。
在一些实施例中,所述目标文件目录包括第一目录和第二目录,所述第二目录为所述第一目录的下一级目录,且所述第二目录是以所述数据结构对应的文件名称命名的;
所述从已创建的目录中,依次查询所述目标文件目录中的每级目录,直至查询到以所述文件名称命名的目录,包括:
从已创建的至少一个一级目录中,查询所述第一目录;
从所述第一目录下的至少一个二级目录中,查询所述第二目录。
本公开实施例中,提供了一种针对二级目录的查询方式,按照目标文件目录中的每级目录,通过逐级查找,查询到以文件名称命名的目录,无需直接在第一目录下遍历存储的多个数据文件,减少了遍历的数据文件数量,提高了数据文件的查询效率。
在一些实施例中,所述目标文件目录包括第三目录、第四目录和第五目录,所述第四目录为所述第三目录的下一级目录,所述第五目录为所述第四目录的下一级目录,且所述第五目录是以所述数据结构对应的文件名称命名的;
所述从已创建的目录中,依次查询所述目标文件目录中的每级目录,直至查询到以所述文件名称命名的目录,包括:
从已创建的至少一个一级目录中,查询所述第三目录;
从所述第三目录下的至少一个二级目录中,查询所述第四目录;
从所述第四目录下的至少一个三级目录中,查询所述第五目录。
本公开实施例中,提供了一种针对三级目录的查询方式,按照目标文件目录中的每级目录,通过逐级查找,查询到以文件名称命名的目录,无需直接在第一目录下遍历存储的多个数据文件,减少了遍历的数据文件数量,提高了数据文件的查询效率。
在一些实施例中,所述基于以所述文件名称命名的目录,读取所述文件名称对应的数据文件,包括:
基于以所述文件名称命名的目录,从所述数据文件中读取数据流;
对所述数据流进行反序列化处理,得到所述数据流对应的数据。
本公开实施例中,先从数据文件中读取出数据流,将数据流恢复为原来的数据结构的数据,实现对数据的读取。
在一些实施例中,所述对所述数据流进行反序列化处理,得到所述数据流对应的数据,包括:
调用对象输入流,对所述数据流进行反序列化处理,得到所述数据,所述对象输出流用于将任一数据流转换为对应的数据。
本公开实施例中,由于多种数据结构的数据都能够进行序列化,在反序列化处理时,调用对象输入流,对数据流进行恢复,实现对数据的读取。
根据本公开实施例的再一方面,提供一种数据存储装置,所述数据存储装置包括:
序列化单元,被配置为执行对待存储的目标数据进行序列化处理,得到所述目标数据对应的数据流;
目录确定单元,被配置为执行确定所述目标数据的数据结构对应的文件目录,所述文件目录包括多级目录,且所述文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的;
数据存储单元,被配置为执行将所述数据流存储至所述文件名称对应的数据文件中。
在一些实施例中,所述序列化单元,被配置为执行:
响应于所述目标数据的数据结构与目标接口关联,对所述目标数据进行序列化处理,得到所述数据流;
其中,与所述目标接口关联的数据结构对应的数据可序列化。
在一些实施例中,所述序列化单元,被配置为执行调用对象输出流,对所述目标数据进行序列化处理,得到所述数据流,所述对象输出流用于将任一数据转换为对应的数据流。
在一些实施例中,所述数据存储装置还包括:
请求发送单元,被配置为执行通过目标应用,向操作系统发送数据存储请求;
目录创建单元,被配置为执行通过所述操作系统,接收所述数据存储请求,响应于所述数据存储请求,在所述操作系统的内存空间中创建所述目标应用对应的一级目录。
在一些实施例中,所述目录确定单元,被配置为执行:
确定所述目标数据所属的目标应用对应的文件目录,所述文件目录至少包括一级目录;
响应于在所述一级目录下不存在第一目录,在所述一级目录下创建所述第一目录,所述第一目录是以所述目标数据的数据结构对应的文件名称命名的。
在一些实施例中,所述目录确定单元,被配置为执行:
确定所述目标数据所属的目标应用对应的文件目录,所述文件目录至少包括一级目录;
响应于在所述一级目录下不存在第二目录,在所述一级目录下创建所述第二目录,所述第二目录是指以所述数据结构对应的文件名称命名的目录的上一级目录;
在所述第二目录下创建第三目录,所述第三目录是以所述数据结构对应的文件名称命名的。
在一些实施例中,所述数据存储单元,被配置为执行响应于所述数据流的数据量不超过操作系统的内存空间的最大数据量,将所述数据流存储至所述数据文件中。
在一些实施例中,所述目录确定单元,被配置为执行从所述目标数据所属的目标应用的数据库中,查询所述目标数据的数据结构对应的文件目录,所述数据库用于存储所述目标应用的至少一种数据结构对应的文件目录。
根据本公开实施例的再一方面,提供一种数据读取装置,所述数据读取装置包括:
第一目录获取单元,被配置为执行响应于携带数据结构的数据读取指令,从数据库中查询所述数据结构对应的目标文件目录,所述目标文件目录包括多级目录,且所述目标文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的,所述数据库用于存储至少一种数据结构对应的文件目录;
目录查询单元,被配置为执行从已创建的目录中,依次查询所述目标文件目录中的每级目录,直至查询到以所述文件名称命名的目录;
数据读取单元,被配置为执行基于以所述文件名称命名的目录,读取所述文件名称对应的数据文件。
在一些实施例中,所述目标文件目录包括第一目录和第二目录,所述第二目录为所述第一目录的下一级目录,且所述第二目录是以所述数据结构对应的文件名称命名的;所述目录查询单元,被配置为执行:
从已创建的至少一个一级目录中,查询所述第一目录;
从所述第一目录下的至少一个二级目录中,查询所述第二目录。
在一些实施例中,所述目标文件目录包括第三目录、第四目录和第五目录,所述第四目录为所述第三目录的下一级目录,所述第五目录为所述第四目录的下一级目录,且所述第五目录是以所述数据结构对应的文件名称命名的;所述目录查询单元,被配置为执行:
从已创建的至少一个一级目录中,查询所述第三目录;
从所述第三目录下的至少一个二级目录中,查询所述第四目录;
从所述第四目录下的至少一个三级目录中,查询所述第五目录。
在一些实施例中,所述数据读取单元,包括:
数据流读取子单元,被配置为执行基于以所述文件名称命名的目录,从所述数据文件中读取数据流;
反序列化子单元,被配置为执行对所述数据流进行反序列化处理,得到所述数据流对应的数据。
在一些实施例中,所述反序列化子单元,被配置为执行调用对象输入流,对所述数据流进行反序列化处理,得到所述数据,所述对象输出流用于将任一数据流转换为对应的数据。
根据本公开实施例的再一方面,提供了一种终端,所述终端包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的存储器;
其中,所述一个或多个处理器被配置为执行上述方面所述的数据存储方法,或者被配置为执行上述方面所述的数据读取方法。
根据本公开实施例的再一方面,提供一种计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行上述方面所述的数据存储方法,或者使得终端能够执行上述方面所述的数据读取方法。
根据本公开实施例的再一方面,提供一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被处理器执行以实现上述方面所述的数据存储方法,或者以实现上述方面所述的数据读取方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种数据存储方法的流程图。
图2是根据一示例性实施例示出的一种数据读取方法的流程图。
图3是根据一示例性实施例示出的另一种数据存储方法的流程图。
图4是根据一示例性实施例示出的另一种数据存储方法的流程图。
图5是根据一示例性实施例示出的另一种数据读取方法的流程图。
图6是根据一示例性实施例示出的另一种数据读取方法的流程图。
图7是根据一示例性实施例示出的一种数据存储装置的框图。
图8是根据一示例性实施例示出的另一种数据存储装置的框图。
图9是根据一示例性实施例示出的一种数据读取装置的框图。
图10是根据一示例性实施例示出的一种终端的结构框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图说明中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等),均为经用户授权或者经过各方充分授权的信息。
为了便于理解本公开实施例提供的数据存储方法、数据读取方法,对本公开实施例涉及到的关键词进行解释:
SharedPreference(SP,一种轻量级的存储类):SP是一个轻量级的存储类,用于存储Long、Int、String等数据结构的数据。
Serializable接口:用于标识数据可序列化的接口,与该Serializable接口关联的数据结构可基于ObjectOutputStream(对象输出流)和ObjectInputStream(对象输入流)进行数据流与数据之间的转换。
本公开实施例提供的数据存储方法和数据读取方法,可应用于终端中安装的任一应用。
例如,用户基于目标应用填写报名表,但是在填写了一部分之后,需要先退出目标应用,之后再继续填写,此时能够采用本公开实施例提供的数据存储方法,在填写的数据为可序列化的数据的情况下,将已填写的数据转换为对应的数据流,并在内存空间中创建多级目录,且最后一级目录的名称为“baomingbiao”,在该最后一级目录下创建名称为“baomingbiao”的数据文件,并将数据流存储至该数据文件中。之后,再次启动目标应用,继续填写该报名表时,能够采用本公开实施例提供的数据读取方法,查询数据结构对应的多级目录,从内存空间中依次查询多级目录中的每级目录,直至查询到名称为“baomingbiao”的目录,读取“baomingbiao”对应的数据文件,得到已填写的数据。
又例如,终端在目标应用中打开了某个页面,如果页面中的数据为可序列化的数据,则采用本公开实施例提供的数据存储方法,存储页面中的数据。之后,再次显示该页面时,能够采用本公开实施例提供的数据读取方法,从本地存储的数据中查找到该页面中待显示的数据,进行显示,而无需再通过网络获取该页面,以提高网页的显示速度。
图1是根据一示例性实施例示出的一种数据存储方法的流程图,参见图1,该方法应用于终端中,包括以下步骤:
101、对待存储的目标数据进行序列化处理,得到目标数据对应的数据流。
其中,目标数据为任一可序列化的数据,序列化处理是指将数据由原来的数据结构转换为数据流的形式,数据流为终端可存储的数据形式。
102、确定目标数据的数据结构对应的文件目录,文件目录包括多级目录,且文件目录中的其中一级目录是以数据结构对应的文件名称命名的。
其中,目标数据的数据结构是指目标数据的结构,例如,数组、队列、数、链表等数据结构。每个数据结构具有对应的文件名称,该文件名称为预先设置的。文件目录中的其中一级目录是指除一级目录之外的任一级目录。
103、将数据流存储至文件名称对应的数据文件中。
在存储数据流之前,需要创建存储该数据流的数据文件。如果未创建该数据文件,则基于以文件名称命名的目录及文件名称,创建数据文件,将数据流存储至新创建的数据文件中;如果已创建参考文件名称对应的数据文件,则直接将数据流存储在该数据文件中,无需再进行创建。
本公开实施例提供的方法,由于目标数据的数据结构对应的文件目录为多级目录,且文件目录中的其中一级目录是以数据结构对应的文件名称来命名的,将数据文件存储在以该文件名称命名的目录下,避免了将不同数据结构对应的数据文件存储在同一目录下。将可序列化的目标数据转换为数据流,以数据流的形式存储至文件名称对应的数据文件中,无论是任一数据结构的目标数据,只要可序列化即可进行存储,因此可存储的数据结构更加多样。
在一些实施例中,对目标数据进行序列化处理,得到目标数据对应的数据流,包括:
响应于目标数据的数据结构与目标接口关联,对目标数据进行序列化处理,得到数据流;
其中,与目标接口关联的数据结构对应的数据可序列化。
在一些实施例中,对目标数据进行序列化处理,得到目标数据对应的数据流,包括:
调用对象输出流,对目标数据进行序列化处理,得到数据流,对象输出流用于将任一数据转换为对应的数据流。
在一些实施例中,确定目标数据的数据结构对应的文件目录之前,数据存储方法还包括:
通过目标应用,向操作系统发送数据存储请求;
通过操作系统,接收数据存储请求,响应于数据存储请求,在操作系统的内存空间中创建目标应用对应的一级目录。
在一些实施例中,确定目标数据的数据结构对应的文件目录,包括:
确定目标数据所属的目标应用对应的文件目录,文件目录至少包括一级目录;
响应于在一级目录下不存在第一目录,在一级目录下创建第一目录,第一目录是以目标数据的数据结构对应的文件名称命名的。
在一些实施例中,确定目标数据的数据结构对应的文件目录,包括:
确定目标数据所属的目标应用对应的文件目录,文件目录至少包括一级目录;
响应于在一级目录下不存在第二目录,在一级目录下创建第二目录,第二目录是指以数据结构对应的文件名称命名的目录的上一级目录;
在第二目录下创建第三目录,第三目录是以数据结构对应的文件名称命名的。
在一些实施例中,将数据流存储至文件名称对应的数据文件中,包括:
响应于数据流的数据量不超过操作系统的内存空间的最大数据量,将数据流存储至数据文件中。
在一些实施例中,确定目标数据的数据结构对应的文件目录,包括:
从目标数据所属的目标应用的数据库中,查询目标数据的数据结构对应的文件目录,数据库用于存储目标应用的至少一种数据结构对应的文件目录。
图2是根据一示例性实施例示出的另一种数据存储方法的流程图,参见图2,该方法应用于终端中,该终端为便携式、袖珍式、手持式等多种类型的终端,如手机、计算机、平板电脑等,该方法包括以下步骤:
201、终端获取待存储的目标数据。
本公开实施例以终端中安装的目标应用为例进行说明,目标应用为即时通信应用、视频应用、短视频应用、游戏应用或其他应用。
其中,目标数据为用户基于终端在目标应用中输入的数据,例如,目标数据为用户输入的用户名、密码等数据;或者,目标数据为其他电子设备发送给当前终端的数据,例如,目标数据为其他终端发送给当前终端的聊天信息,或者目标数据为目标应用对应的服务器发送给终端的页面内容。
终端获取到目标应用中的目标数据后,确定该目标数据是否为可序列化的数据,如果目标数据是可序列化的数据,则执行后续存储目标数据的步骤,如果目标数据不是可序列化的数据,则不执行后续存储目标数据的步骤。其中,可序列化的数据是指可采用序列表示的数据。例如,目标数据为一串数字“12345”,每个数字都可以转换为对应的序列,则这一串数字可序列化。
并且,目标数据的数据结构具有对应的文件名称,数据结构是指目标数据的结构,例如,数组、队列、链表等数据结构。在一些实施例中,目标应用具有对应的数据库,该数据库用于存储该目标应用的至少一种数据结构对应的文件名称,后续针对数据结构创建了对应的文件目录之后,该数据库还用于存储至少一种数据结构对应的文件目录。
在一些实施例中,可序列化的数据结构与目标接口关联,即根据数据的数据结构是否与目标接口关联,来确定数据是否可序列化,能够方便地确定目标数据是否能够存储。如果数据结构与目标接口关联,则表示该数据结构对应的数据可序列化,如果该数据结构未与目标接口关联,则表示该数据结构对应的数据不可序列化。其中,目标接口用于指示关联的数据结构对应的数据可序列化。
202、终端响应于目标数据为可序列化的数据,对目标数据进行序列化处理,得到目标数据对应的数据流。
终端在目标数据为可序列化的数据的情况下,对目标数据进行序列化处理,得到目标数据对应的数据流。其中,对目标数据进行序列化处理即是将目标数据转换为可存储的形式,数据流包括目标数据对应的序列,该数据流是由“0”和“1”组成的,例如,该数据流为二进制数据流。
在一些实施例中,终端响应于目标数据的数据结构与目标接口关联,确定目标数据可序列化,对目标数据进行序列化处理,得到数据流。
对于生成数据流的方式,在一些实施例中,终端调用对象输出流,对目标数据进行序列化处理,得到数据流,方便后续对数据进行存储。其中,对象输出流用于将任一数据转换为对应的数据流。进一步地,针对不同的数据结构,调用对象输出流,采用不同的序列化方式进行序列化处理。
在一些实施例中,终端对目标数据进行序列化处理,获取到的数据流中不仅包括原来的目标数据,还包括目标数据的数据结构对应的结构标识,该结构标识用于指示该数据流原来的数据结构,便于后续根据该结构标识对数据流进行恢复。
在一些实施例中,终端通过目标应用,得到数据流之后,生成数据存储指令,该数据存储指令中携带该数据流,该数据存储指令指示存储该数据流,后续操作系统响应于该数据存储指令,存储数据流。
在一些实施例中,终端响应于目标数据为可序列化的数据,直接对目标数据进行序列化处理,执行后续存储步骤;或者,终端检测到目标数据为可序列化的数据,且检测到针对目标数据执行的存储操作,才会对目标数据进行序列化处理,执行后续存储步骤。也就是说,终端可以自动存储可序列化的数据,也可以是响应于用户触发的存储操作才存储可序列化的数据。例如,待存储的目标数据为用户在报名表中输入的报名信息,在一种情况下,终端检测到用户输入的报名信息后,确定该报名信息为可序列化的数据,自动执行后续存储步骤;在另一种情况下,在报名表下方显示保存控件,终端确定该报名信息为可序列化的数据,且检测到用户对保存控件的触发操作后,执行后续存储步骤。
203、终端确定目标数据的数据结构对应的文件目录。
对于目标应用,终端安装目标应用之后,通过目标应用,向操作系统发送数据存储请求,通过操作系统,接收该数据存储请求,响应于该数据存储请求,在操作系统的内存空间中创建目标应用对应的一级目录。之后,通过目标应用产生的数据,都可以在该一级目录下再次创建二级目录、三级目录或更多级的目录,并基于创建的其中一级目录,来创建存储数据的数据文件。其中,文件目录中的其中一级目录为除一级目录之外的任一级目录,例如,文件目录中包括四级目录,则其中一级目录为文件目录中的二级目录、三级目录或四级目录中的任一级目录。
在操作系统的内存空间中创建一级目录,能够避免存储空间的最大存储量对存储的数据量的限制,待存储的数据的数据量只要不超过操作系统的内存空间的最大数据量即可存储,与相关技术中的SP存储方式相比,解决了对存储空间限制的问题。相关技术中仅能够存储轻量级数据,而本公开实施例中可以对轻量级数据进行存储,也可以对非轻量级数据进行存储。
本公开实施例中,终端确定数据结构对应的文件目录包括两种情况,一种是终端首次存储该数据结构对应的数据,终端中还没有创建该数据结构对应的文件目录;另一种是终端不是首次存储该数据结构对应的数据,终端中已经创建了该数据结构对应的文件目录。
针对上述两种情况,终端需要先确定是否是首次存储该数据结构对应的数据。在一些实施例中,终端从目标数据所属的目标应用的数据库中,查询该数据结构对应的文件目录,如果数据库中不存在该数据结构对应的文件目录,则表示之前未创建该数据结构对应的文件目录,如果数据库中存在该数据结构对应的文件目录,则表示之前已经创建了该数据结构对应的文件目录。
第一种:终端首次存储数据结构对应的目标数据。
在这种情况下,在一些实施例中,终端创建包括一级目录和二级目录的文件目录。终端确定目标数据所属的目标应用对应的文件目录,即确定目标应用对应的一级目录,响应于该一级目录下不存在第一目录,在该一级目录下创建第一目录。其中,第一目录为一级目录的下一级目录,也即是一级目录下的二级目录,该第一目录是以目标数据的数据结构对应的文件名称命名的。
在一些实施例中,终端创建包括一级目录、二级目录和三级目录的文件目录。终端确定目标数据所属的目标应用对应的文件目录,即确定目标应用对应的一级目录,响应于在一级目录下不存在第二目录,在一级目录下创建第二目录,在第二目录下创建第三目录。其中,第二目录为一级目录的下一级目录,也即是一级目录下的二级目录,该第二目录是指以数据结构对应的文件名称命名的目录的上一级目录,第三目录是第二目录的下一级目录,也即是二级目录下的三级目录,该第三目录是以数据结构对应的文件名称命名的。
在不存在以数据结构对应的文件名称命名的目录的情况下,在一级目录下创建以数据结构对应的文件名称命名的目录,得到多级目录,后续基于创建的以文件名称命名的目录来指示对应的数据文件,便于基于目录来查询数据文件,且在多级目录的情况下,避免了将数据文件直接存储在一级目录下。
针对文件目录包括三个层级的目录的情况,第二目录下具有以多个数据结构对应的文件名称命名的多个第三目录时,目标数据虽然是首次存储,但是第二目录下其他数据结构的数据已经存储的情况下,已经创建了第二目录,此时终端确定数据结构对应的一级目录及第二目录,在第二目录下创建三级目录,无需重复创建第二目录。
在一些实施例中,终端从目标应用的数据库中,查询目标数据的数据结构对应的文件名称,将该文件名称作为第一目录的名称。
第二种:终端非首次存储数据结构对应的目标数据。
这种情况下,终端从数据库中能够直接查询到目标数据的数据结构对应的文件目录,直接按照该文件目录,从操作系统的内存空间中查找与该文件目录的名称相同的文件目录即可,无需创建目录。例如,待存储的目标数据为用户在报名表中输入的报名信息,之前已经存储了用户填写的报名信息,此次用户修改了部分信息,则需要对之前存储的报名信息进行更新,此时报名信息不是首次存储,终端可以从数据库中查询到上次存储的报名信息对应的文件目录,根据查询到的文件目录,将这次修改的报名信息存储至上次的数据文件中即可。
需要说明的是,上述实施例仅是以文件目录包括两个层级的目录或包括三个层级的目录为例进行说明,在另一实施例中,可以包括四个层级的目录、五个层级的目录或更多层级的目录。无论包括多个层级的目录,最后一级目录均是以数据结构对应的文件名称命名的。
在上述实施例中,仅是以文件目录中的其中一级目录为最后一级目录为例进行说明。在另一实施例中,该其中一级目录不为文件目录中的最后一级目录时,除了基于该目录存储目标数据之外,还可以在该其中一级目录下创建下一级目录,基于该下一级目录来存储其他数据。
对于文件目录,在一些实施例中,将目标应用的应用标识作为一级目录的名称,将文件名称作为二级目录的名称,例如,应用标识为APP,文件名称为KEY1,则得到文件目录“APP\KEY1”。或者,将预先设置的与数据结构对应的参考目录名称作为二级目录的名称,将文件名称作为三级目录的名称,例如,应用标识为APP,参考目录名称为KEY2,文件名称为KEY1,则得到文件目录“APP\KEY2\KEY1”。
204、终端将数据流存储至文件名称对应的数据文件中。
终端确定数据结构对应的文件目录后,如果是首次存储该数据结构对应的目标数据,则基于该文件目录及文件名称,创建文件名称对应的数据文件,将数据流存储至数据文件中;如果是非首次存储该数据结构对应的目标数据,则基于文件目录,查询到文件名称对应的数据文件,将数据流存储至数据文件中。
采用上述数据存储方式,存储的目标数据可以存储较长时间,或者为了节省存储空间,目标数据在存储参考时长后,终端自动删除存储的目标数据及存储目标数据的数据文件,之后再次存储目标数据时,按照首次存储该目标数据的数据结构进行操作。其中,参考时长为一天、一周、一个月等时长。
本公开实施例中的数据存储流程,参见图3所示的流程图,终端响应于目标数据之后,确定该目标数据的数据结构是可序列化的,则调用对象输出流,将目标数据转换为对应的数据流,然后根据该数据结构对应的文件名称,确定对应的文件目录,将数据流写入文件名称对应的数据文件中,完成对目标数据的存储。
另外,终端将数据流存储至数据文件中之后,还可以从数据文件中读取存储的数据流,得到存储的目标数据。例如,终端基于目标应用显示了某个页面,并将该页面中的数据采用上述存储方式进行了存储,之后用户关闭该页面,再次打开该页面后,终端从内存空间中读取页面中的数据,对该页面进行显示。终端读取数据的详细过程,参见下述图5所示的实施例。
需要说明的是,本公开实施例仅是以任一目标应用为例进行说明,在另一实施例中,终端中还安装有其他应用时,其他应用的数据的存储方式与目标应用的数据的存储方式同理。区别在于,属于不同应用的数据,分别存储在不同的一级目录下。例如,应用A的数据,都存储在一级目录“A”下,应用B的数据,都存储在一级目录“B”下。
本公开实施例提供的方法,由于目标数据的数据结构对应的文件目录为多级目录,且文件目录中的其中一级目录是以数据结构对应的文件名称来命名的,将数据文件存储在以文件名称命名的目录下,避免了将不同数据结构对应的数据文件存储在同一目录下。将可序列化的目标数据转换为数据流,以数据流的形式存储至文件名称对应的数据文件中,且无论是任一数据结构的目标数据,只要可序列化即可进行存储,因此可存储的数据结构更加多样。
并且,根据数据结构是否与目标接口关联,来确定目标数据是否为可序列化的数据,即采用目标接口来指示数据结构对应的数据是否可序列化,能够方便地确定是否能够存储目标数据。
并且,在操作系统的内存空间中创建目标应用对应的一级目录,后续该目标应用对应的数据即可存储在该一级目录下,与相关技术中的SP存储方式相比,避免了存储空间的限制。
本公开实施例中,采用上述图3所示的数据存储方法存储数据之后,还能够采用相应的数据读取方法,将存储的数据从数据文件中读取出来,通过下面图5所示的实施例对数据读取过程进行说明。
图4是根据一示例性实施例示出的一种数据读取方法的流程图,参见图2,该方法应用于终端中,包括以下步骤:
401、响应于携带数据结构的数据读取指令,从数据库中查询数据结构对应的目标文件目录。
其中,数据读取指令用于指示读取数据结构对应的数据文件中的数据,数据库用于存储至少一种数据结构对应的文件目录。根据数据读取指令携带的数据结构,从数据库中查询对应的目标文件名称,目标文件目录包括多级目录,且目标文件目录中的其中一级目录是以数据结构对应的文件名称命名的。
402、从已创建的目录中,依次查询目标文件目录中的每级目录,直至查询到以文件名称命名的目录。
其中,已创建的目录中不仅包括目标文件目录,还包括其他数据结构对应的文件目录,因此需要按照目标文件目录中的每级目录,逐层查询,直至查询到以文件名称命名的目录。例如,目标文件目录包括一级目录和二级目录,则先查询一级目录,然后在查询到的一级目录下查询二级目录。
403、基于以文件名称命名的目录,读取文件名称对应的数据文件。
由于文件目录中的其中一级目录是以数据结构对应的文件名称来命名的,目录的名称与数据文件对应的文件名称相同,因此该目录能够指示已查询到对应的数据文件,即可从查询到的数据文件中读取数据,实现数据读取。
本公开实施例提供的方法,在读取数据的过程中,只需要按照目标文件目录中的每级目录,查找到以文件名称命名的目录,即可查询到该文件名称对应的数据文件,而无需遍历每一级目录中的数据文件,减少了遍历的数据文件数量,提高了数据读取效率。
在一些实施例中,目标文件目录包括第一目录和第二目录,第二目录为第一目录的下一级目录,且第二目录是以数据结构对应的文件名称命名的;
从已创建的目录中,依次查询目标文件目录中的每级目录,直至查询到以文件名称命名的目录,包括:
从已创建的至少一个一级目录中,查询第一目录;
从第一目录下的至少一个二级目录中,查询第二目录。
在一些实施例中,目标文件目录包括第三目录、第四目录和第五目录,第四目录为第三目录的下一级目录,第五目录为第四目录的下一级目录,且第五目录是以数据结构对应的文件名称命名的;
从已创建的目录中,依次查询目标文件目录中的每级目录,直至查询到以文件名称命名的目录,包括:
从已创建的至少一个一级目录中,查询第三目录;
从第三目录下的至少一个二级目录中,查询第四目录;
从第四目录下的至少一个三级目录中,查询第五目录。
在一些实施例中,基于以文件名称命名的目录,读取文件名称对应的数据文件,包括:
基于以文件名称命名的目录,从数据文件中读取数据流;
对数据流进行反序列化处理,得到数据流对应的数据。
在一些实施例中,对数据流进行反序列化处理,得到数据流对应的数据,包括:
调用对象输入流,对数据流进行反序列化处理,得到数据,对象输出流用于将任一数据流转换为对应的数据。
图5是根据一示例性实施例示出的一种数据读取方法的流程图。参见图5,该方法的执行主体为终端,包括以下步骤:
501、终端响应于携带数据结构的数据读取指令,从数据库中查询数据结构对应的目标文件目录。
其中,数据读取指令用于指示读取携带的数据结构的数据。目标文件目录包括多级目录,例如目标文件目录包括两个层级的目录,即目标文件目录包括第一目录和第二目录,第二目录为第一目录的下一级目录,或者目标文件目录包括三个层级的目录,即目标文件目录包括第三目录、第四目录和第五目录,第四目录为第三目录的下一级目录,第五目录为第四目录的下一级目录。
数据库用于存储至少一种数据结构对应的文件目录,该数据库为终端中的数据库。在一些实施例中,对于终端中安装的多个应用,不同的应用可以分别设置对应的数据库,或者,不同的应用共用一个数据库,在共用一个数据库的情况下,需要将数据结构、应用标识以及文件目录对应存储,以区分不同应用对应的数据结构。
在一些实施例中,终端从数据库中未查询到数据结构对应的目标文件目录时,则表示未存储该数据结构的数据,或者该数据结构的数据已经被删除。
本公开实施例以目标应用为例进行说明。在一些实施例中,终端启动目标应用后,显示目标应用的某个页面时,会生成数据读取指令,该数据读取指令中携带基于该页面确定的数据结构,终端响应于该数据读取指令,从数据库中查询该数据结构对应的文件目录。
502、终端从已创建的目录中,依次查询目标文件目录中的每级目录,直至查询到以数据结构对应的文件名称命名的目录。
终端从数据库中查询到的目标文件目录中包括多个层级的目录,在查询过程中,终端按照目标文件目录中多个层级的目录,从一级目录开始,依次查询二级目录、三级目录等,直至查询到以数据结构对应的文件名称命名的目录。
在一些实施例中,目标文件目录包括第一目录和第二目录时,终端从已创建的至少一个一级目录中,查询第一目录;从第一目录下的至少一个二级目录中,查询第二目录,该二级目录即为以文件名称命名的目录。
每个目录具有对应的名称,终端从已创建的至少一个一级目录中,查询名称与第一目录的名称相同的一级目录,然后从查询到的一级目录下的至少一个二级目录中,查询名称与第二目录的名称相同的二级目录。
在一些实施例中,目标文件目录包括第三目录、第四目录和第五目录时,终端从已创建的至少一个一级目录中,查询第三目录,从第三目录下的至少一个二级目录中,查询第四目录,从第四目录下的至少一个三级目录中,查询第五目录,该第五目录即为以文件名称命名的目录。
每个目录具有对应的名称,终端从已创建的至少一个一级目录中,查询名称与第三目录的名称相同的一级目录,然后从查询到的一级目录下的至少一个二级目录中,查询名称与第四目录的名称相同的二级目录,再从查询到的二级目录下的至少一个三级目录中,查询名称与第五目录的名称相同的三级目录。
对于文件目录下存储有多个数据文件的情况来说,按照目标文件目录中的每级目录,首先查询第三目录,然后在查询到的第三目录下查询第四目录,再在查询到的第四目录下查询第五目录,通过逐级查找,查询到最后一级目录,无需直接在第一目录下遍历存储的多个数据文件,减少了遍历的数据文件数量,提高了数据文件的查询效率。
503、终端基于以文件名称命名的目录,从文件名称对应的数据文件中读取数据流。
终端查询到以文件名称命名的目录后,查询该目录对应的数据文件,然后确定该数据文件中是否包括数据流,如果包括数据流,则从数据文件中读取该数据流,如果不包括数据流,则表示数据文件中未存储数据流,或者存储的数据流已被删除。
504、终端对数据流进行反序列化处理,得到数据流对应的数据。
由于数据流是对数据存储时采用的数据形式,如果需要向用户显示数据,还需要对数据流进行反序列化处理,将数据流恢复为原来的数据结构,使终端能够使用读取的数据。例如,数字“1”在存储时存储为“00000001”,则需要将“00000001”再转换为“1”,终端向用户显示数字“1”。
在一些实施例中,终端调用对象输入流,对数据流进行反序列化处理,得到对应的数据。其中,对象输出流用于将任一数据流转换为对应的数据,即将数据流恢复为原来的数据结构对应的数据。并且,由于多种数据结构的数据都能够进行序列化,在反序列化处理时,调用对象输入流,对数据流进行恢复,从而确保将数据流恢复为原来的数据结构,避免反序列化处理得到的数据的数据结构不是需要的结构。
在一些实施例中,数据流中包括数据结构对应的结构标识,终端根据该结构标识,将数据流转换为原来的数据结构对应的数据。
并且,对于目标应用来说,终端读取数据之后,终端基于目标应用显示该读取的数据。其中,如果读取的数据为用户之前输入过的数据,则用户无需重复输入,简化用户操作;如果读取的数据为从服务器中获取的数据,则无需再从服务器获取,提高显示速度。
本公开实施例中的数据读取流程,参见图6所示的流程图,基于数据结构对应的目标文件目录,在文件系统中查询对应的数据文件,调用对象输入流,读取数据文件,并将读取的数据流恢复为所需的数据结构。其中,文件系统即为内存空间中存储了多个数据文件后,由多个数据文件构成的系统。
举例来说,一级目录的名称为APP,一级目录下的两个二级目录的名称分别为KEY1和KEY2,二级目录KEY1下的三个三级目录的名称分别为KEY3、KEY4和KEY5,二级目录KEY2下的三个三级目录的名称分别为KEY6、KEY7和KEY8,且每个三级目录下有对应的数据文件。终端从数据库中查询到数据结构对应的目标文件目录为“APP\KEY1\KEY5”,则查询数据文件时,先查询到一级目录APP,然后遍历两个二级目录,查询到二级目录KEY1,再遍历二级目录KEY1下的三个三级目录,查询到三级目录KEY5,从而读取三级目录KEY5下的数据文件。而相关技术中,将数据文件存储在一级目录APP下,在读取数据时,需要遍历全部的数据文件。
本公开实施例中这种多级目录的结构,当数据文件较少时,与相关技术中将数据文件存储在同一目录下的方式相比,数据读取效率相差不多,但是,当数据文件过多时,相关技术中遍历全部的数据文件需要耗费较长时间,且会影响终端的运行效率。例如,有1000个数据文件,如果都存储在同一目录下,最多需要遍历1000个数据文件,才能够查找到需要的数据文件。而本公开中的多级目录,在一级目录下设置两个二级目录,每个二级目录下存储500个数据文件,此时,只需遍历两个二级目录,确定需要查找的二级目录,然后最多再遍历500个数据文件即可查找到需要的数据文件。
本公开实施例提供的方法,对于文件目录下存储有多个数据文件的情况来说,与相关技术中遍历同一目录下的多个数据文件来读取数据相比,本公开只需要按照目标文件目录中的每级目录,查找到以文件名称命名的目录,即可查询到该文件名称对应的数据文件,减少了遍历的数据文件数量,提高了数据读取效率。
并且,按照目标文件目录中的每级目录,通过逐级查找,查询到以文件名称命名的目录,无需遍历每一级目录中的数据文件,减少了遍历的数据文件数量,提高了数据文件的查询效率。
并且,由于多种数据结构的数据都能够进行序列化,在反序列化处理时,调用对象输入流,对数据流进行恢复,能够确保将数据流恢复为原来的数据结构,避免反序列化处理得到的数据的数据结构不是需要的结构。
图7是根据一示例性实施例示出的一种数据存储装置的框图。参见图7,该装置包括:
序列化单元701,被配置为执行对待存储的目标数据进行序列化处理,得到目标数据对应的数据流;
目录确定单元702,被配置为执行确定目标数据的数据结构对应的文件目录,文件目录包括多级目录,且文件目录中的其中一级目录是以数据结构对应的文件名称命名的;
数据存储单元703,被配置为执行将数据流存储至文件名称对应的数据文件中。
本公开实施例提供的装置,由于目标数据的数据结构对应的文件目录为多级目录,且文件目录中的其中一级目录是以数据结构对应的文件名称来命名的,将数据文件存储在以文件名称命名的目录下,避免了将不同数据结构对应的数据文件存储在同一目录下。将可序列化的目标数据转换为数据流,以数据流的形式存储至文件名称对应的数据文件中,无论是任一数据结构的目标数据,只要可序列化即可进行存储,因此可存储的数据结构更加多样。
在一些实施例中,序列化单元701,被配置为执行:
响应于目标数据的数据结构与目标接口关联,对目标数据进行序列化处理,得到数据流;
其中,与目标接口关联的数据结构对应的数据可序列化。
在一些实施例中,序列化单元701,被配置为执行调用对象输出流,对目标数据进行序列化处理,得到数据流,对象输出流用于将任一数据转换为对应的数据流。
在一些实施例中,参见图8,数据存储装置还包括:
请求发送单元704,被配置为执行通过目标应用,向操作系统发送数据存储请求;
目录创建单元705,被配置为执行通过操作系统,接收数据存储请求,响应于数据存储请求,在操作系统的内存空间中创建目标应用对应的一级目录。
在一些实施例中,目录确定单元702,被配置为执行:
确定目标数据所属的目标应用对应的文件目录,文件目录至少包括一级目录;
响应于在一级目录下不存在第一目录,在一级目录下创建第一目录,第一目录是以目标数据的数据结构对应的文件名称命名的。
在一些实施例中,目录确定单元702,被配置为执行:
确定目标数据所属的目标应用对应的文件目录,文件目录至少包括一级目录;
响应于在一级目录下不存在第二目录,在一级目录下创建第二目录,第二目录是指以数据结构对应的文件名称命名的目录的上一级目录;
在第二目录下创建第三目录,第三目录是以数据结构对应的文件名称命名的。
在一些实施例中,数据存储单元703,被配置为执行响应于数据流的数据量不超过操作系统的内存空间的最大数据量,将数据流存储至数据文件中。
在一些实施例中,目录确定单元702,被配置为执行从目标数据所属的目标应用的数据库中,查询目标数据的数据结构对应的文件目录,数据库用于存储目标应用的至少一种数据结构对应的文件目录。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9是根据一示例性实施例示出的一种数据读取装置的框图。参见图9,该装置包括:
第一目录获取单元901,被配置为执行响应于携带数据结构的数据读取指令,从数据库中查询数据结构对应的目标文件目录,目标文件目录包括多级目录,且目标文件目录中的其中一级目录是以数据结构对应的文件名称命名的,数据库用于存储至少一种数据结构对应的文件目录;
目录查询单元902,被配置为执行从已创建的目录中,依次查询目标文件目录中的每级目录,直至查询到以文件名称命名的目录;
数据读取单元903,被配置为执行基于以文件名称命名的目录,读取文件名称对应的数据文件。
本公开实施例提供的装置,在读取数据的过程中,只需要按照目标文件目录中的每级目录,查找到以文件名称命名的目录,即可查询到该文件名称对应的数据文件,而无需遍历每一级目录中的数据文件,减少了遍历的数据文件数量,提高了数据读取效率。
在一些实施例中,目标文件目录包括第一目录和第二目录,第二目录为第一目录的下一级目录,且第二目录是以数据结构对应的文件名称命名的;目录查询单元902,被配置为执行:
从已创建的至少一个一级目录中,查询第一目录;
从第一目录下的至少一个二级目录中,查询第二目录。
在一些实施例中,目标文件目录包括第三目录、第四目录和第五目录,第四目录为第三目录的下一级目录,第五目录为第四目录的下一级目录,且第五目录是以数据结构对应的文件名称命名的;目录查询单元902,被配置为执行:
从已创建的至少一个一级目录中,查询第三目录;
从第三目录下的至少一个二级目录中,查询第四目录;
从第四目录下的至少一个三级目录中,查询第五目录。
在一些实施例中,数据读取单元903,包括:
数据流读取子单元,被配置为执行基于以文件名称命名的目录,从数据文件中读取数据流;
反序列化子单元,被配置为执行对数据流进行反序列化处理,得到数据流对应的数据。
在一些实施例中,反序列化子单元,被配置为执行调用对象输入流,对数据流进行反序列化处理,得到数据,对象输出流用于将任一数据流转换为对应的数据。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在示例性实施例中,提供了一种电子设备,该电子设备包括一个或多个处理器,以及用于存储该一个或多个处理器可执行指令的存储器;其中,该一个或多个处理器被配置为执行上述实施例中的数据存储方法或数据读取方法。
在一些实施例中,该电子设备提供为终端。图10是根据一示例性实施例示出的一种终端1000的结构框图。该终端1000可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
终端1000包括有:处理器1001和存储器1002。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一条程序代码,该至少一条程序代码用于被处理器1001所执行以实现本公开中方法实施例提供的数据存储方法或数据读取方法。
在一些实施例中,终端1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、显示屏1005、摄像头组件1006、音频电路1007、定位组件1008和电源1009中的至少一种。
外围设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。在一些实施例中,射频电路1004包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本公开对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置在终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在另一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。在一些实施例中,摄像头组件1006包括前置摄像头和后置摄像头。前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。
定位组件1008用于定位终端1000的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1008可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯定位系统或欧盟的伽利略定位系统的定位组件。
电源1009用于为终端1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。
加速度传感器1011可以检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1012可以检测终端1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对终端1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1013可以设置在终端1000的侧边框和/或显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,可以检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在显示屏1005的下层时,由处理器1001根据用户对显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1014可以被设置在终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商Logo时,指纹传感器1014可以与物理按键或厂商Logo集成在一起。
光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制显示屏1005的显示亮度。具体地,当环境光强度较高时,调高显示屏1005的显示亮度;当环境光强度较低时,调低显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1016,也称距离传感器,设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,当存储介质中的指令由终端的处理器执行时,使得终端能够执行上述数据存储方法或数据读取方法终端所执行的步骤。在一些实施例中,计算机可读存储介质可以是ROM(只读存储器,Read Only Memory)、RAM(随机存取存储器,Random Access Memory)、CD-ROM(只读光盘,Compact Disc Read-Only Memory)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行以实现上述数据存储方法或数据读取方法。
本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种数据存储方法,其特征在于,所述数据存储方法包括:
对待存储的目标数据进行序列化处理,得到所述目标数据对应的数据流;
确定所述目标数据的数据结构对应的文件目录,所述文件目录包括多级目录,且所述文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的;
将所述数据流存储至所述文件名称对应的数据文件中。
2.根据权利要求1所述的数据存储方法,其特征在于,所述对待存储的目标数据进行序列化处理,得到所述目标数据对应的数据流,包括:
响应于所述目标数据的数据结构与目标接口关联,对所述目标数据进行序列化处理,得到所述数据流;
其中,与所述目标接口关联的数据结构对应的数据可序列化。
3.根据权利要求1所述的数据存储方法,其特征在于,所述对待存储的目标数据进行序列化处理,得到所述目标数据对应的数据流,包括:
调用对象输出流,对所述目标数据进行序列化处理,得到所述数据流,所述对象输出流用于将任一数据转换为对应的数据流。
4.根据权利要求1所述的数据存储方法,其特征在于,所述确定所述目标数据的数据结构对应的文件目录之前,所述数据存储方法还包括:
通过目标应用,向操作系统发送数据存储请求;
通过所述操作系统,接收所述数据存储请求,响应于所述数据存储请求,在所述操作系统的内存空间中创建所述目标应用对应的一级目录。
5.一种数据读取方法,其特征在于,所述数据读取方法包括:
响应于携带数据结构的数据读取指令,从数据库中查询所述数据结构对应的目标文件目录,所述目标文件目录包括多级目录,且所述目标文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的,所述数据库用于存储至少一种数据结构对应的文件目录;
从已创建的目录中,依次查询所述目标文件目录中的每级目录,直至查询到以所述文件名称命名的目录;
基于以所述文件名称命名的目录,读取所述文件名称对应的数据文件。
6.一种数据存储装置,其特征在于,所述数据存储装置包括:
序列化单元,被配置为执行对待存储的目标数据进行序列化处理,得到所述目标数据对应的数据流;
目录确定单元,被配置为执行确定所述目标数据的数据结构对应的文件目录,所述文件目录包括多级目录,且所述文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的;
数据存储单元,被配置为执行将所述数据流存储至所述文件名称对应的数据文件中。
7.一种数据读取装置,其特征在于,所述数据读取装置包括:
第一目录获取单元,被配置为执行响应于携带数据结构的数据读取指令,从数据库中查询所述数据结构对应的目标文件目录,所述目标文件目录包括多级目录,且所述目标文件目录中的其中一级目录是以所述数据结构对应的文件名称命名的,所述数据库用于存储至少一种数据结构对应的文件目录;
目录查询单元,被配置为执行从已创建的目录中,依次查询所述目标文件目录中的每级目录,直至查询到以所述文件名称命名的目录;
数据读取单元,被配置为执行基于以所述文件名称命名的目录,读取所述文件名称对应的数据文件。
8.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的存储器;
其中,所述一个或多个处理器被配置为执行如权利要求1至权利要求4任一项所述的数据存储方法,或者被配置为执行如权利要求5所述的数据存储方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由终端的处理器执行时,使得所述终端能够执行如权利要求1至权利要求4任一项所述的数据存储方法,或者使得所述终端能够执行如权利要求5所述的数据读取方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求4任一项所述的数据存储方法,或者实现权利要求5所述的数据读取方法。
CN202110426433.3A 2021-04-20 2021-04-20 数据存储方法、数据读取方法、装置、终端及存储介质 Pending CN113204549A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110426433.3A CN113204549A (zh) 2021-04-20 2021-04-20 数据存储方法、数据读取方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110426433.3A CN113204549A (zh) 2021-04-20 2021-04-20 数据存储方法、数据读取方法、装置、终端及存储介质

Publications (1)

Publication Number Publication Date
CN113204549A true CN113204549A (zh) 2021-08-03

Family

ID=77027662

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110426433.3A Pending CN113204549A (zh) 2021-04-20 2021-04-20 数据存储方法、数据读取方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN113204549A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022117A1 (en) * 2005-07-21 2007-01-25 Keohane Susann M Accessing file system snapshots directly within a file system directory
CN101630322A (zh) * 2009-08-26 2010-01-20 中国人民解放军信息工程大学 树形目录结构下的文件集在数据库中的存储和访问方法
CN110046137A (zh) * 2017-12-20 2019-07-23 宏碁云端技术公司 将数据流分组并存储至云端存储文件中的系统和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022117A1 (en) * 2005-07-21 2007-01-25 Keohane Susann M Accessing file system snapshots directly within a file system directory
CN101630322A (zh) * 2009-08-26 2010-01-20 中国人民解放军信息工程大学 树形目录结构下的文件集在数据库中的存储和访问方法
CN110046137A (zh) * 2017-12-20 2019-07-23 宏碁云端技术公司 将数据流分组并存储至云端存储文件中的系统和方法

Similar Documents

Publication Publication Date Title
CN108881030B (zh) 灰度发布场景下的路由方法及装置
CN110674022B (zh) 行为数据获取方法、装置及存储介质
CN108717432B (zh) 资源查询方法及装置
CN111949680A (zh) 数据处理方法、装置、计算机设备及存储介质
CN109547847B (zh) 添加视频信息的方法、装置及计算机可读存储介质
CN108495183B (zh) 显示专辑信息的方法和装置
CN110471614B (zh) 一种存储数据的方法、检测终端的方法及装置
CN110737692A (zh) 一种检索数据的方法、建立索引库的方法及装置
CN111008083B (zh) 页面通信方法、装置、电子设备及存储介质
CN110191236B (zh) 歌曲播放队列管理方法、装置、终端设备及存储介质
CN111881423A (zh) 限制功能使用授权方法、装置、系统
CN111428080A (zh) 录像文件的存储方法、搜索方法及装置
CN115134316B (zh) 话题展示方法、装置、终端及存储介质
CN112597417B (zh) 页面更新方法、装置、电子设备及存储介质
CN111694521B (zh) 存储文件的方法、装置及系统
CN111125095B (zh) 数据前缀添加的方法、装置、电子设备及介质
CN111124539B (zh) 初始场景资源文件查找方法、装置、设备及存储介质
CN111064657B (zh) 关注账户分组的方法、装置、系统
CN109618018B (zh) 用户头像显示方法、装置、终端、服务器及存储介质
CN110851435B (zh) 一种存储数据的方法及装置
CN110928867B (zh) 一种数据融合的方法及装置
CN113204549A (zh) 数据存储方法、数据读取方法、装置、终端及存储介质
CN112311652A (zh) 消息发送方法、装置、终端及存储介质
CN111191254A (zh) 访问校验方法、装置、计算机设备及存储介质
CN112135256A (zh) 移动轨迹的确定方法、装置、设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination