CN113553300A - 文件的处理方法、装置、可读介质和电子设备 - Google Patents
文件的处理方法、装置、可读介质和电子设备 Download PDFInfo
- Publication number
- CN113553300A CN113553300A CN202110851220.5A CN202110851220A CN113553300A CN 113553300 A CN113553300 A CN 113553300A CN 202110851220 A CN202110851220 A CN 202110851220A CN 113553300 A CN113553300 A CN 113553300A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- target
- target file
- index table
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title abstract description 8
- 238000012545 processing Methods 0.000 claims abstract description 98
- 238000000034 method Methods 0.000 claims abstract description 60
- 238000004590 computer program Methods 0.000 claims description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims description 3
- 238000003786 synthesis reaction Methods 0.000 claims description 3
- 230000010365 information processing Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101100269850 Caenorhabditis elegans mask-1 gene Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种文件的处理方法、装置、可读介质和电子设备,涉及电子信息处理技术领域,该方法包括:将目标文件划分为多个数据块,每个数据块均为指定大小,查找数据页中多个可用的存储空间,并将多个数据块分别存储至可用的存储空间,每个存储空间与数据块的大小相同,根据目标文件的文件信息,和每个数据块存储在数据页中的位置信息,在索引表中生成目标文件对应的文件项,根据数据页、索引表和文件头生成合包文件,文件头用于记录数据页的数据页信息,和索引表的索引表信息。本公开通过对目标文件进行分块,并存储在数据页中,将多个文件整合为一个合包文件,能够提高文件的处理效率。
Description
技术领域
本公开涉及电子信息处理技术领域,具体地,涉及一种文件的处理方法、装置、可读介质和电子设备。
背景技术
随着电子信息技术的不断发展,应用市场上出现了各种各样的应用程序,以满足用户多样化的需求。应用程序在运行过程中,可能会读写大量的小文件,例如频繁读写多个Lua脚本等,由于终端设备的数据总线的带宽是有限的,频繁的读写操作会严重影响终端设备的性能,降低文件的处理效率。并且,由于大量的小文件通常是分散存储在终端设备的存储器(例如:硬盘、ROM等)中,同样限制了读写的速度,降低了文件的处理效率。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
第一方面,本公开提供一种文件的处理方法,所述方法包括:
将目标文件划分为多个数据块,每个所述数据块均为指定大小;
查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间;每个所述存储空间与所述数据块的大小相同;
根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项;
根据所述数据页、所述索引表和文件头生成合包文件,所述文件头用于记录所述数据页的数据页信息,和所述索引表的索引表信息。
第二方面,本公开提供一种文件的处理装置,所述装置包括:
划分模块,用于将目标文件划分为多个数据块,每个所述数据块均为指定大小;
存储模块,用于查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间;每个所述存储空间与所述数据块的大小相同;
生成模块,用于根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项;
合成模块,用于根据所述数据页、所述索引表和文件头生成合包文件,所述文件头用于记录所述数据页的数据页信息,和所述索引表的索引表信息。
第三方面,本公开提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现本公开第一方面所述方法的步骤。
第四方面,本公开提供一种电子设备,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现本公开第一方面所述方法的步骤。
通过上述技术方案,本公开首先将目标文件划分为指定大小的多个数据块,然后查找数据页中多个可用的,且均为指定大小的存储空间,并将多个数据块分别存储至可用的存储空间,再根据目标文件的文件信息和每个数据块存储在数据页中的位置信息,在索引表中生成目标文件对应的文件项,最后包括了数据页的数据页信息、索引表的索引表信息的文件头,数据页和索引表,生成合包文件。本公开通过对目标文件进行分块,并存储在数据页中,将多个文件整合为一个合包文件,能够提高文件的处理效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
图1是根据一示例性实施例示出的一种文件的处理方法的流程图;
图2是根据一示例性实施例示出的另一种文件的处理方法的流程图;
图3是根据一示例性实施例示出的另一种文件的处理方法的流程图;
图4是根据一示例性实施例示出的一种索引表结构的示意图;
图5是根据一示例性实施例示出的另一种文件的处理方法的流程图;
图6是根据一示例性实施例示出的另一种文件的处理方法的流程图;
图7是根据一示例性实施例示出的另一种文件的处理方法的流程图;
图8是根据一示例性实施例示出的另一种文件的处理方法的流程图;
图9是根据一示例性实施例示出的另一种文件的处理方法的流程图;
图10是根据一示例性实施例示出的一种文件的处理装置的框图;
图11是根据一示例性实施例示出的另一种文件的处理装置的框图;
图12是根据一示例性实施例示出的另一种文件的处理装置的框图;
图13是根据一示例性实施例示出的另一种文件的处理装置的框图;
图14是根据一示例性实施例示出的另一种文件的处理装置的框图;
图15是根据一示例性实施例示出的另一种文件的处理装置的框图;
图16是根据一示例性实施例示出的另一种文件的处理装置的框图;
图17是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1是根据一示例性实施例示出的一种文件的处理方法的流程图,如图1所示,该方法包括:
步骤101,将目标文件划分为多个数据块,每个数据块均为指定大小。
举例来说,首先获取目标文件,例如可以通过安装某个应用程序的安装包获取目标文件,也可以通过指定的路径从服务器获取目标文件,还可以直接从本地存储中获取目标文件。可以将目标文件理解为小文件,即大小小于预设阈值(例如:512KB)的文件,目标文件可以有多个(例如:1000个)。之后可以将目标文件按照指定大小进行划分,得到多个数据块,即将目标文件分割为大小相等的多个数据块。其中,指定大小可以根据终端设备的存储器读写数据的最小单元(或者最小粒度)来确定,例如可以是4KB,这样,终端设备能够快速读写存储单元中存储的数据块。以目标文件为100KB,指定大小为4KB来举例,那么可以将目标文件分为25个数据块。
步骤102,查找数据页中多个可用的存储空间,并将多个数据块分别存储至可用的存储空间。每个存储空间与数据块的大小相同。
示例的,在得到多个数据块之后,可以在数据页中查找与数据块的数量对应的多个可用的存储空间,然后将多个数据块分别存储在可用的存储空间。进一步的,在将数据块存入可用的存储空间后,可以将该存储空间更新为占用的状态。数据页中可以包括多个存储空间,并且每个存储空间均为指定大小,可以理解为,数据页对应终端设备的存储器上连续的多个存储空间,即对于终端设备来说,数据页中包括的多个存储空间是一个整体。每个存储空间可以为可用的状态或者占用的状态,可用表示该存储空间可以用于存储(即该存储空间中未存储数据,或者该存储空间中存储的数据可以被覆盖),占用表示该存储空间不能用于存储(即该存储空间异常,或者该存储空间中存储的数据不能被覆盖)。以数据页为10MB,指定大小为4KB来举例,那么数据页中可以包括2560个存储空间,可以用于存储2560个数据块。
需要说明的是,数据页中的存储空间是连续的,但存储多个数据块的可用的存储空间可以是连续的,也可以是离散的,也就是说可用的存储空间,可能是分散在数据页中的。例如,目标文件的4个数据块,可能分别存储在数据页中的第2、10、38、102个存储空间中。进一步的,可以存在一个或多个数据页,每个数据页的大小相同,每个数据页中包括的存储空间的数量也相同。相应的,在存在多个数据页的场景中,目标文件的多个数据块,可能存储在同一个数据页中,也可能存储在多个数据页中,例如,目标文件的4个数据块,可能分别存储在第1个数据页中的第2、10个存储空间,和第3个数据页中的第5、72个存储空间中。
步骤103,根据目标文件的文件信息,和每个数据块存储在数据页中的位置信息,在索引表中生成目标文件对应的文件项。
步骤104,根据数据页、索引表和文件头生成合包文件,文件头用于记录数据页的数据页信息,和索引表的索引表信息。
示例的,将多个数据块存储在可用的存储空间中之后,可以先获取目标文件的文件信息,和每个数据块存储在数据页中的位置信息。其中,文件信息用于表征目标文件,可以包括:文件名、文件大小、校验值等,还可以包括文件标识、文件类型、修改时间戳等,本公开对此不作具体限定。位置信息用于表征每个数据块存储在数据页中的位置,例如可以包括对应的数据页的标识、对应的存储空间的标识等。之后,可以在索引表中,根据文件信息和位置信息建立目标文件对应的文件项,文件项与目标文件一一对应,既能够表征目标文件,又能够记录每个数据块存储在数据页中的位置。索引表可以是一个,也可以是多个,每个索引表的大小相同,在索引表是多个的场景中,可以根据目标文件的文件名在多个索引表中筛选出一个索引表来建立对应的文件项。例如,可以预先设置26个索引表,分别与26个字母对应,然后根据目标文件的文件名的首字母(或者尾字母),在对应的索引表中建立文件项。再比如,可以预先设置256个索引表,分别与0-255对应,然后根据目标文件的文件名对应的哈希值的低8位(或高8位),在对应的索引表中建立文件项。
针对多个目标文件的场景,可以重复执行步骤101至步骤103,直至在索引表中生成每个目标文件对应的文件项。最后,可以根据数据页、索引表和文件头,生成合包文件。文件头中记录了数据页的数据页信息,和索引表的索引表信息,其中,数据页信息用于描述数据页,可以包括:数据页的数量、数据页的大小、数据页的位置(可以理解为从合包文件的起始处到数据页入口的偏移)等,索引表信息用于描述索引表,可以包括:索引表的数量、索引表的大小、索引表的位置(可以理解为从合包文件的起始处到索引表入口的偏移)。文件头中还可以包括合包文件的签名、合包文件的版本号等。例如,文件头的格式可以如表1所示:
表1
字段 | 长度(字节) | 描述 |
Magic | 4 | 合包文件的签名,例如可以是:0xdeadbeaf |
Version | 4 | 合包文件的版本号 |
IndexPageSize | 4 | 索引表的大小 |
DataChunkSize | 2 | 数据页的大小 |
IndexPageEntryOffset | 8 | 索引表的位置 |
DataEntryOffset | 8 | 数据页的位置 |
这样,数据页中存储了目标文件的全部内容,即存储了全部的数据块,索引表中记录了目标文件对应的文件项,能够通过文件项确定每个数据块在数据页中存储的位置,从而将多个目标文件整合为一个合包文件,对于终端设备来说,由于合包文件是一个整体,频繁读写多个目标文件时,相当于对合包文件的读写,有效降低了对数据总线的带宽的占用,同时也提高了读写的速度,从而提高目标文件的处理效率。
综上所述,本公开首先将目标文件划分为指定大小的多个数据块,然后查找数据页中多个可用的,且均为指定大小的存储空间,并将多个数据块分别存储至可用的存储空间,再根据目标文件的文件信息和每个数据块存储在数据页中的位置信息,在索引表中生成目标文件对应的文件项,最后包括了数据页的数据页信息、索引表的索引表信息的文件头,数据页和索引表,生成合包文件。本公开通过对目标文件进行分块,并存储在数据页中,将多个文件整合为一个合包文件,能够提高文件的处理效率。
图2是根据一示例性实施例示出的另一种文件的处理方法的流程图,如图2所示,数据页为多个。步骤102的实现方式可以包括:
步骤1021,在多个数据页中确定至少一个目标数据页,目标数据页中包括多个可用的存储空间。
步骤1022,将多个数据块分别存储至目标数据页中的多个可用的存储空间。
示例的,在数据页有多个的场景中,在存储数据块时,可以先在多个数据页中,确定包括可用的存储空间的目标数据页,目标数据页可以是一个,也可以是多个。然后再将多个数据块分别存储在目标数据页中可用的存储空间中。具体的,可以根据数据块的数量,选择目标数据页。例如,若某个数据页中可用的存储空间的数量,大于或等于数据块的数量,那么可以将该数据页作为目标数据页。再比如,有N(N为大于1的自然数)个数据页中包括的可用的存储空间的总数量,大于或等于数据块的数量,那么可以将这N个数据页作为目标数据页。
相应的,文件项可以包括:标志数据、用于表征目标文件文件信息的数据和用于表征目标文件位置信息的数据。标志数据用于表征目标文件的状态,目标文件的状态可以包括:正常状态、删除状态。文件信息包括:文件名、文件大小、校验值中的至少一种。位置信息包括:每个数据块在目标文件中的顺序、目标数据页的标识、存储每个数据块的可用的存储空间的标识。例如,文件项的格式可以如表2所示:
表2
字段 | 长度(字节) | 描述 |
Mask | 1 | 标志数据 |
Name | 256 | 文件名 |
Size | 4 | 文件大小 |
Hash | 8 | 校验值,例如可以是:CRC64 |
ChunkList | 4*n(n>=0) | 位置信息 |
其中,表2中的ChunkList中可以包括n个4字节的数据,每个4字节的数据对应一个数据块,可以用前2字节来表征存储该数据块的目标数据页的标识,用后2字节来表征存储该数据块的存储空间的标识,进一步的,每个4字节的数据在ChunkList中的顺序,即表示对应的数据块在目标文件中的顺序。这样,可以根据ChunkList确定每个数据块的位置。以目标文件被分为2个数据块来举例,ChunkList包括2个4字节的数据,对应2个数据块,第1个4字节的数据为:0x00020101,前2字节为0x0002,后2字节为0x0101,可以记为(2,257),表示目标文件中的第1个数据块存储在第2个数据页中的第257个存储空间中。第2个4字节的数据为:0x00010001,前2字节为0x0001,后2字节为0x0001,可以记为(1,1),表示目标文件中的第2个数据块存储在第1个数据页中的第1个存储空间中。
图3是根据一示例性实施例示出的另一种文件的处理方法的流程图,如图3所示,索引表为多个。步骤103的实现方式可以包括:
步骤1031,按照预设算法处理目标文件的文件信息包括的文件名,以得到目标文件的哈希值。
步骤1032,在多个索引表中,确定目标文件的哈希值对应的目标索引表。
步骤1033,在目标索引表中生成目标文件对应的文件项。
举例来说,可以预先设置256个索引表,分别与0-255对应。在生成目标文件对应的文件项时,可以先按照预设算法处理目标文件的文件信息包括的文件名,得到目标文件的哈希值,预设算法例如可以是XXHASH算法。然后,将目标文件的哈希值的低8位(或高8位)对应的索引表,确定为目标索引表,并在目标索引表中生成目标文件对应的文件项。例如,目标文件的哈希值的低8位为200,那么可以将200对应的索引表作为目标索引表。这样,通过目标文件的哈希值,可以在目标索引表中生成目标文件的文件项,避免了文件项随机分布。相应的,在对目标文件进行处理时,能够快速、准确地定位到目标索引表。
进一步的,还可以为每个索引表设置有多个子索引表,当该索引表剩余的空间不足以生成对应的文件项时,可以在该索引表的子索引表中生成对应的文件项。例如,索引表的结构可以如图4所示,每个索引表可以设置两个字段(每个字段可以为8字节):link和sibling,其中,link用于指向该索引表的子索引表,sibling用于指向该索引表的下一个索引表。例如,第1个索引表的link字段指向第1个索引表的第1个子索引表,第1个索引表的第1个子索引表的link字段指向第1个索引表的第2个子索引表,依次类推。第1个索引表的sibling字段指向第2个索引表,依次类推。
在一种应用场景中,若目标文件的数据块的数量较大,一个索引表(或者子索引表)中无法完整存储目标文件对应的文件项,那么可以将目标文件对应的文件项拆分成多个,分别存储在一个索引表的多个子索引表中,并在目标文件对应的文件项中包括的标志数据中,记录该文件项是被拆分的,并记录多个子索引表的位置。
图5是根据一示例性实施例示出的另一种文件的处理方法的流程图,如图5所示,该方法还可以包括以下步骤:
步骤105,响应于针对目标文件的处理请求,根据处理请求包括的目标文件的文件名,在合包文件中确定目标索引表。
步骤106,在目标索引表中查找目标文件对应的文件项。
举例来说,在生成合包文件之后,针对合包文件中的目标文件,可以触发多种处理请求,用于指示对目标文件进行多种操作,例如:删除、修改、读取(也可以理解为查询)。首先,可以根据处理请求包括的目标文件的文件名,在合包文件中确定目标索引表,并在目标索引表中查找目标文件对应的文件项。一种实现方式,可以在全部索引表中记录的全部文件项中,依次查找包括目标文件的文件名的文件项。另一种实现方式,可以先按照XXHASH算法对目标文件的文件名进行处理,以得到目标文件的哈希值,然后在多个索引表中,确定与目标文件的哈希值对应的目标索引表,再在目标索引表中查找包括目标文件的文件名的文件项,这样,能够大大减少需要查找的文件项的数量,从而快速、准确地确定目标文件对应的文件项。
步骤107,若处理请求指示读取目标文件,根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,从目标数据页中读取每个数据块。
示例的,在处理请求指示读取目标文件的情况下,可以根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,从目标数据页中读取每个数据块。以目标文件被分为2个数据块来举例,ChunkList包括2个4字节的数据,分别为:0x00020101、0x00010001。那么,可以依次从合包文件的第2个数据页中的第257个存储空间中,读取目标文件中的第1个数据块,从合包文件的第1个数据页中的第1个存储空间中,读取目标文件中的第2个数据块,从而读取目标文件。
步骤108,若处理请求指示删除目标文件,将目标文件对应的文件项中包括的标志数据置为删除状态。
示例的,在处理请求指示删除目标文件的情况下,可以将目标文件对应的文件项中包括的标志数据置为删除状态。进一步的,可以根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,将目标数据页中用于存储每个数据块的存储空间更新为可用。这样,无需删除目标文件对应的文件项,也无需删除存储每个数据块的存储空间中的数据,即可快速删除目标文件。
步骤109,若处理请求指示修改目标文件,根据处理请求对应的修改后的目标文件,和目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,修改目标数据页中存储的数据块。
示例的,在处理请求指示修改目标文件的情况下,可以根据处理请求对应的修改后的目标文件,和目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,修改目标数据页中存储的数据块。
进一步的,若需要向合包文件中增加一个新的目标文件,也可以理解为向合包文件中写入一个新的目标文件,那么可以触发添加请求,添加请求对应一个新的目标文件。首先,可以将新的目标文件划分为多个,均为指定大小的多个数据块,然后查找数据页中查找与数据块的数量对应的多个可用的存储空间,然后将新的目标文件的多个数据块分别存储在数据页中可用的存储空间中,最后根据目标文件的文件信息,和每个数据块存储在数据页中的位置信息,在合包文件中的索引表中生成新的目标文件对应的文件项。也就是说,相比于生成合包文件的过程,向合包文件中写入一个新的目标文件,只需要将新的目标文件按数据块存入数据页,并在索引表中生成对应的文件项即可。
图6是根据一示例性实施例示出的另一种文件的处理方法的流程图,如图6所示,步骤109可以通过以下步骤实现:
步骤1091,将处理请求对应的修改后的目标文件划分为多个修改后数据块,每个修改后数据块均为指定大小。
步骤1092,根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,确定存储数据块的目标存储空间。
举例来说,在要对目标文件进行修改的情况下,可以先确定目标文件划分的数据块的数量,即文件项中ChunkList包括的4字节的数据的数量(即n)。然后将处理请求对应的修改后的目标文件划分为多个修改后数据块,同样的,每个修改后数据块均为指定大小。再根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,确定存储数据块的目标存储空间。最后根据数据块的数量与修改后数据块的数量的关系,修改目标数据页中存储的数据块。
步骤1093,在数据块的数量与修改后数据块的数量相等的情况下,将修改后数据块存储在目标存储空间中。
步骤1094,在数据块的数量大于修改后数据块的数量的情况下,将修改后数据块存储在目标存储空间中,并将未存储修改后数据块的目标存储空间标记为可用。
步骤1095,在数据块的数量小于修改后数据块的数量的情况下,将修改后数据块存储在目标存储空间中,并将未存储的修改后数据块存储在可用的存储空间中。
步骤1096,更新目标索引表中目标文件对应的文件项。
示例的,在数据块的数量与修改后数据块的数量相等的情况下,也就是说修改后数据块与之前的数据块是一一对应的,那么可以将修改后数据块存储在目标存储空间中。可以理解为,可以用修改后数据块,替换之前的数据块。
在数据块的数量大于修改后数据块的数量的情况下,也就是说目标文件的大小减小了,例如,数据块的数量为第一数量,修改后的数据块的数量为第二数量(第一数量大于第二数量),那么可以将修改后数据块存储在第二数量个目标存储空间中,同时将未存储修改后数据块的目标存储空间更新为可用。其中,未存储修改后数据块的目标存储空间的数量即为第一数量与第二数量的差。
在数据块的数量小于修改后数据块的数量的情况下,也就是说目标文件的大小增大了,那么可以先将修改后数据块存储在目标存储空间中,再将未存储的修改后数据块存储在数据页中可用的存储空间中。也就是说,先用修改后数据块,替换之前的数据块,然后再为剩余的修改后数据块,选出可用的存储空间,并存储。
最后,在存储了全部修改后数据块之后,可以更新目标索引表中目标文件对应的文件项。具体的,可以更新文件项中的文件大小、校验值,再根据存储每个修改后数据块的数据页的标识、存储空间的标识,更新文件项中的ChunkList。在数据块的数量与修改后数据块的数量相等的情况下,ChunkList可以保持不变,在数据块的数量大于修改后数据块的数量的情况下,ChunkList包括的4字节的数据的数量变小,在数据块的数量小于修改后数据块的数量的情况下,ChunkList包括的4字节的数据的数量增大。
图7是根据一示例性实施例示出的另一种文件的处理方法的流程图,如图7所示,步骤107可以包括:
步骤1071,根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,生成读取链表,读取链表包括每个数据块对应的节点,每个数据块对应的节点在读取链表中的顺序,与该数据块在目标文件中的顺序相同,每个数据块对应的节点用于表征存储该数据块的存储空间的标识、存储该数据块的目标数据页的标识。
步骤1072,根据读取链表,从目标数据页中读取每个数据块。
在一种实现方式中,可以设置一个读取接口,可以表示为ChunkStream,读取接口可以根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,生成一个包括了每个数据块对应的节点的读取链表。可以理解为,按照每个数据块在目标文件中的顺序,依次生成该数据块对应的节点,并将这些节点依次连接。每个节点的内容,用于表征存储对应的数据块的存储空间的标识、存储对应的数据块的目标数据页的标识。以目标文件被分为2个数据块来举例,ChunkList包括2个4字节的数据,分别为:0x00020101,0x00010001,那么生成的读取链表为:(2,257)->(1,1)。在读取目标文件时,可以根据读取链表,依次从目标数据页中读取每个数据块。这样,通过读取链表,能够按照每个数据块在目标文件中的顺序,快速获取每个数据块,从而读取目标文件。
图8是根据一示例性实施例示出的另一种文件的处理方法的流程图,如图8所示,步骤102可以包括:
步骤1023,将多个数据块写入缓存。
步骤1024,从缓存中读取多个数据块,并存储至可用的存储空间中。
示例的,在将数据块存储在存储空间时,可以先统一将多个数据块写入临时的缓存,然后再从缓存中读取多个数据块,并存储在可用的存储空间中。将多个数据块写入的缓存的耗时是显式的,而写入缓存,与直接存储目标文件的时延相当,将多个数据块存储在存储空间中的耗时并不是显式的,这样保证了目标文件的存储速度。
同样的,在步骤1095中,将未存储的修改后数据块存储在可用的存储空间中,也可以先统一将未存储的修改后数据块写入缓存,然后再从缓存中读取存储的修改后数据块,并存储在可用的存储空间中。
图9是根据一示例性实施例示出的另一种文件的处理方法的流程图,如图9所示,文件项包括多个字节。在步骤103之后,该方法还可以包括:
步骤110,对目标文件对应的文件项进行压缩。压缩后的目标文件对应的文件项,包括:指示字节和数据字节,指示字节用于表征目标文件对应的文件项中每个字节是否为零,数据字节为目标文件对应的文件项中不为零的字节。
举例来说,由于文件项中ChunkList包括n个4字节的数据,每个4字节的数据分为两部分:分别用于表征存储该数据块的目标数据页的标识、存储该数据块的存储空间的标识,标识的取值往往较小,因此ChunkList通常是包括了多个0,是稀疏的。因此,可以对ChunkList进行压缩,使得压缩后的ChunkList分为指示字节和数据字节。其中,指示字节用于表征目标文件对应的文件项中每个字节是否为零,数据字节为目标文件对应的文件项中不为零的字节。这样,能够有效减少文件项在索引表中所占的空间,同时也能避免恶意第三方对ChunkList进行破解,从而提高了数据块的安全度。例如,ChunkList中可以包括2个4字节的数据,共8个字节:0x00、0x00、0x00、0x01、0x00、0x00、0x00、0x02。指示字节可以为8bit(即1个字节),分别用于表征8个字节中每个字节是否为零:0x11(二进制:00010001),表示第4个字节和第8个字节不为零,其余字节均为零。相应的数据字节包括第4个字节、第8个字节共两个字节:0x01和0x02,那么压缩后的ChunkList为:0x11、0x01、0x02,可以看出,压缩后的文件项的数据量大大减少了(压缩率为62.5%)。
综上所述,本公开首先将目标文件划分为指定大小的多个数据块,然后查找数据页中多个可用的,且均为指定大小的存储空间,并将多个数据块分别存储至可用的存储空间,再根据目标文件的文件信息和每个数据块存储在数据页中的位置信息,在索引表中生成目标文件对应的文件项,最后包括了数据页的数据页信息、索引表的索引表信息的文件头,数据页和索引表,生成合包文件。本公开通过对目标文件进行分块,并存储在数据页中,将多个文件整合为一个合包文件,能够提高文件的处理效率。
图10是根据一示例性实施例示出的一种文件的处理装置的框图,如图10所示,该装置200包括:
划分模块201,用于将目标文件划分为多个数据块,每个数据块均为指定大小。
存储模块202,用于查找数据页中多个可用的存储空间,并将多个数据块分别存储至可用的存储空间。每个存储空间与数据块的大小相同。
生成模块203,用于根据目标文件的文件信息,和每个数据块存储在数据页中的位置信息,在索引表中生成目标文件对应的文件项。
合成模块204,用于根据数据页、索引表和文件头生成合包文件,文件头用于记录数据页的数据页信息,和索引表的索引表信息。
图11是根据一示例性实施例示出的另一种文件的处理装置的框图,如图11所示,数据页为多个。存储模块202可以包括:
第一确定子模块2021,用于在多个数据页中确定至少一个目标数据页,目标数据页中包括多个可用的存储空间。
存储子模块2022,用于将多个数据块分别存储至目标数据页中的多个可用的存储空间。
相应的,文件项包括:标志数据、用于表征目标文件文件信息的数据和用于表征目标文件位置信息的数据。标志数据用于表征目标文件的状态。文件信息包括:文件名、文件大小、校验值中的至少一种。位置信息包括:每个数据块在目标文件中的顺序、目标数据页的标识、存储每个数据块的可用的存储空间的标识。
图12是根据一示例性实施例示出的另一种文件的处理装置的框图,如图12所示,索引表为多个。生成模块203可以包括:
哈希子模块2031,用于按照预设算法处理目标文件的文件信息包括的文件名,以得到目标文件的哈希值。
第二确定子模块2032,用于在多个索引表中,确定目标文件的哈希值对应的目标索引表。
生成子模块2033,用于在目标索引表中生成目标文件对应的文件项。
图13是根据一示例性实施例示出的另一种文件的处理装置的框图,如图13所示,该装置200还包括:
确定模块205,用于响应于针对目标文件的处理请求,根据处理请求包括的目标文件的文件名,在合包文件中确定目标索引表。在目标索引表中查找目标文件对应的文件项。
处理模块206,用于若处理请求指示读取目标文件,根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,从目标数据页中读取每个数据块。若处理请求指示删除目标文件,将目标文件对应的文件项中包括的标志数据置为删除状态。若处理请求指示修改目标文件,根据处理请求对应的修改后的目标文件,和目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,修改目标数据页中存储的数据块。
图14是根据一示例性实施例示出的另一种文件的处理装置的框图,如图14所示,处理模块206可以包括:
划分子模块2061,用于将处理请求对应的修改后的目标文件划分为多个修改后数据块,每个修改后数据块均为指定大小。
第三确定子模块2062,用于根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,确定存储数据块的目标存储空间。
处理子模块2063,用于在数据块的数量与修改后数据块的数量相等的情况下,将修改后数据块存储在目标存储空间中。在数据块的数量大于修改后数据块的数量的情况下,将修改后数据块存储在目标存储空间中,并将未存储修改后数据块的目标存储空间标记为可用。在数据块的数量小于修改后数据块的数量的情况下,将修改后数据块存储在目标存储空间中,并将未存储的修改后数据块存储在可用的存储空间中。
更新子模块2064,用于更新目标索引表中目标文件对应的文件项。
图15是根据一示例性实施例示出的另一种文件的处理装置的框图,如图15所示,处理模块206可以包括:
链表生成子模块2065,用于根据目标文件对应的文件项中包括的用于表征目标文件位置信息的数据,生成读取链表,读取链表包括每个数据块对应的节点,每个数据块对应的节点在读取链表中的顺序,与该数据块在目标文件中的顺序相同,每个数据块对应的节点用于表征存储该数据块的存储空间的标识、存储该数据块的目标数据页的标识。
读取子模块2066,用于根据读取链表,从目标数据页中读取每个数据块。
在一种应用场景中,存储模块202可以用于:
首先,将多个数据块写入缓存。
之后,从缓存中读取多个数据块,并存储至可用的存储空间中。
图16是根据一示例性实施例示出的另一种文件的处理装置的框图,如图16所示,该装置200还包括:
压缩模块207,用于在根据目标文件的文件信息,和每个数据块存储在数据页中的位置信息,在索引表中生成目标文件对应的文件项之后,对目标文件对应的文件项进行压缩。压缩后的目标文件对应的文件项,包括:指示字节和数据字节,指示字节用于表征目标文件对应的文件项中每个字节是否为零,数据字节为目标文件对应的文件项中不为零的字节。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
综上所述,本公开首先将目标文件划分为指定大小的多个数据块,然后查找数据页中多个可用的,且均为指定大小的存储空间,并将多个数据块分别存储至可用的存储空间,再根据目标文件的文件信息和每个数据块存储在数据页中的位置信息,在索引表中生成目标文件对应的文件项,最后包括了数据页的数据页信息、索引表的索引表信息的文件头,数据页和索引表,生成合包文件。本公开通过对目标文件进行分块,并存储在数据页中,将多个文件整合为一个合包文件,能够提高文件的处理效率。
下面参考图17,其示出了适于用来实现本公开实施例的电子设备(可以理解为本公开实施例的执行主体)300的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图17示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图17所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图17示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,终端设备、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:将目标文件划分为多个数据块,每个所述数据块均为指定大小;查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间;每个所述存储空间与所述数据块的大小相同;根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项;根据所述数据页、所述索引表和文件头生成合包文件,所述文件头用于记录所述数据页的数据页信息,和所述索引表的索引表信息。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,划分模块还可以被描述为“将目标文件划分为多个数据块的模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,示例1提供了一种文件的处理方法,包括:将目标文件划分为多个数据块,每个所述数据块均为指定大小;查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间;每个所述存储空间与所述数据块的大小相同;根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项;根据所述数据页、所述索引表和文件头生成合包文件,所述文件头用于记录所述数据页的数据页信息,和所述索引表的索引表信息。
根据本公开的一个或多个实施例,示例2提供了示例1的方法,所述数据页为多个;所述查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间,包括:在多个所述数据页中确定至少一个目标数据页,所述目标数据页中包括多个所述可用的存储空间;将多个所述数据块分别存储至所述目标数据页中的多个所述可用的存储空间;所述文件项包括:标志数据、用于表征所述目标文件文件信息的数据和用于表征所述目标文件位置信息的数据;所述标志数据用于表征所述目标文件的状态;所述文件信息包括:文件名、文件大小、校验值中的至少一种;所述位置信息包括:每个所述数据块在所述目标文件中的顺序、所述目标数据页的标识、存储每个所述数据块的所述可用的存储空间的标识。
根据本公开的一个或多个实施例,示例3提供了示例2的方法,所述索引表为多个;所述根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项,包括:按照预设算法处理所述目标文件的文件信息包括的文件名,以得到所述目标文件的哈希值;在多个所述索引表中,确定所述目标文件的哈希值对应的目标索引表;在所述目标索引表中生成所述目标文件对应的文件项。
根据本公开的一个或多个实施例,示例4提供了示例3的方法,所述方法还包括:响应于针对所述目标文件的处理请求,根据所述处理请求包括的所述目标文件的文件名,在所述合包文件中确定所述目标索引表;在所述目标索引表中查找所述目标文件对应的文件项;若所述处理请求指示读取所述目标文件,根据所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,从所述目标数据页中读取每个所述数据块;若所述处理请求指示删除所述目标文件,将所述目标文件对应的文件项中包括的标志数据置为删除状态;若所述处理请求指示修改所述目标文件,根据所述处理请求对应的修改后的所述目标文件,和所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,修改所述目标数据页中存储的所述数据块。
根据本公开的一个或多个实施例,示例5提供了示例4的方法,所述根据所述处理请求对应的修改后的所述目标文件,和所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,修改所述目标数据页中存储的所述数据块,包括:将所述处理请求对应的修改后的所述目标文件划分为多个修改后数据块,每个所述修改后数据块均为所述指定大小;根据所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,确定存储所述数据块的目标存储空间;在所述数据块的数量与所述修改后数据块的数量相等的情况下,将所述修改后数据块存储在所述目标存储空间中;在所述数据块的数量大于所述修改后数据块的数量的情况下,将所述修改后数据块存储在所述目标存储空间中,并将未存储所述修改后数据块的所述目标存储空间标记为可用;在所述数据块的数量小于所述修改后数据块的数量的情况下,将所述修改后数据块存储在所述目标存储空间中,并将未存储的所述修改后数据块存储在所述可用的存储空间中;更新所述目标索引表中所述目标文件对应的文件项。
根据本公开的一个或多个实施例,示例6提供了示例4的方法,所述根据所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,从所述目标数据页中读取每个所述数据块,包括:根据所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,生成读取链表,所述读取链表包括每个所述数据块对应的节点,每个所述数据块对应的节点在所述读取链表中的顺序,与该数据块在所述目标文件中的顺序相同,每个所述数据块对应的节点用于表征存储该数据块的所述存储空间的标识、存储该数据块的所述目标数据页的标识;根据所述读取链表,从所述目标数据页中读取每个所述数据块。
根据本公开的一个或多个实施例,示例7提供了示例1的方法,所述将多个所述数据块分别存储至所述可用的存储空间,包括:将多个所述数据块写入缓存;从所述缓存中读取多个所述数据块,并存储至所述可用的存储空间。
根据本公开的一个或多个实施例,示例8提供了示例1的方法,所述文件项包括多个字节;在所述根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项之后,所述方法还包括:对所述目标文件对应的文件项进行压缩;压缩后的所述目标文件对应的文件项,包括:指示字节和数据字节,所述指示字节用于表征所述目标文件对应的文件项中每个字节是否为零,所述数据字节为所述目标文件对应的文件项中不为零的字节。
根据本公开的一个或多个实施例,示例9提供了一种文件的处理装置,包括:划分模块,用于将目标文件划分为多个数据块,每个所述数据块均为指定大小;存储模块,用于查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间;每个所述存储空间与所述数据块的大小相同;生成模块,用于根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项;合成模块,用于根据所述数据页、所述索引表和文件头生成合包文件,所述文件头用于记录所述数据页的数据页信息,和所述索引表的索引表信息。
根据本公开的一个或多个实施例,示例10提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现示例1至示例8中所述方法的步骤。
根据本公开的一个或多个实施例,示例11提供了一种电子设备,包括:存储装置,其上存储有计算机程序;处理装置,用于执行所述存储装置中的所述计算机程序,以实现示例1至示例8中所述方法的步骤。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
Claims (11)
1.一种文件的处理方法,其特征在于,所述方法包括:
将目标文件划分为多个数据块,每个所述数据块均为指定大小;
查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间;每个所述存储空间与所述数据块的大小相同;
根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项;
根据所述数据页、所述索引表和文件头生成合包文件,所述文件头用于记录所述数据页的数据页信息,和所述索引表的索引表信息。
2.根据权利要求1所述的方法,其特征在于,所述数据页为多个;所述查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间,包括:
在多个所述数据页中确定至少一个目标数据页,所述目标数据页中包括多个所述可用的存储空间;
将多个所述数据块分别存储至所述目标数据页中的多个所述可用的存储空间;
所述文件项包括:标志数据、用于表征所述目标文件文件信息的数据和用于表征所述目标文件位置信息的数据;所述标志数据用于表征所述目标文件的状态;所述文件信息包括:文件名、文件大小、校验值中的至少一种;所述位置信息包括:每个所述数据块在所述目标文件中的顺序、所述目标数据页的标识、存储每个所述数据块的所述可用的存储空间的标识。
3.根据权利要求2所述的方法,其特征在于,所述索引表为多个;所述根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项,包括:
按照预设算法处理所述目标文件的文件信息包括的文件名,以得到所述目标文件的哈希值;
在多个所述索引表中,确定所述目标文件的哈希值对应的目标索引表;
在所述目标索引表中生成所述目标文件对应的文件项。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
响应于针对所述目标文件的处理请求,根据所述处理请求包括的所述目标文件的文件名,在所述合包文件中确定所述目标索引表;
在所述目标索引表中查找所述目标文件对应的文件项;
若所述处理请求指示读取所述目标文件,根据所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,从所述目标数据页中读取每个所述数据块;
若所述处理请求指示删除所述目标文件,将所述目标文件对应的文件项中包括的标志数据置为删除状态;
若所述处理请求指示修改所述目标文件,根据所述处理请求对应的修改后的所述目标文件,和所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,修改所述目标数据页中存储的所述数据块。
5.根据权利要求4所述的方法,其特征在于,所述根据所述处理请求对应的修改后的所述目标文件,和所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,修改所述目标数据页中存储的所述数据块,包括:
将所述处理请求对应的修改后的所述目标文件划分为多个修改后数据块,每个所述修改后数据块均为所述指定大小;
根据所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,确定存储所述数据块的目标存储空间;
在所述数据块的数量与所述修改后数据块的数量相等的情况下,将所述修改后数据块存储在所述目标存储空间中;
在所述数据块的数量大于所述修改后数据块的数量的情况下,将所述修改后数据块存储在所述目标存储空间中,并将未存储所述修改后数据块的所述目标存储空间标记为可用;
在所述数据块的数量小于所述修改后数据块的数量的情况下,将所述修改后数据块存储在所述目标存储空间中,并将未存储的所述修改后数据块存储在所述可用的存储空间中;
更新所述目标索引表中所述目标文件对应的文件项。
6.根据权利要求4所述的方法,其特征在于,所述根据所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,从所述目标数据页中读取每个所述数据块,包括:
根据所述目标文件对应的文件项中包括的用于表征所述目标文件位置信息的数据,生成读取链表,所述读取链表包括每个所述数据块对应的节点,每个所述数据块对应的节点在所述读取链表中的顺序,与该数据块在所述目标文件中的顺序相同,每个所述数据块对应的节点用于表征存储该数据块的所述存储空间的标识、存储该数据块的所述目标数据页的标识;
根据所述读取链表,从所述目标数据页中读取每个所述数据块。
7.根据权利要求1所述的方法,其特征在于,所述将多个所述数据块分别存储至所述可用的存储空间,包括:
将多个所述数据块写入缓存;
从所述缓存中读取多个所述数据块,并存储至所述可用的存储空间。
8.根据权利要求1所述的方法,其特征在于,所述文件项包括多个字节;在所述根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项之后,所述方法还包括:
对所述目标文件对应的文件项进行压缩;压缩后的所述目标文件对应的文件项,包括:指示字节和数据字节,所述指示字节用于表征所述目标文件对应的文件项中每个字节是否为零,所述数据字节为所述目标文件对应的文件项中不为零的字节。
9.一种文件的处理装置,其特征在于,所述装置包括:
划分模块,用于将目标文件划分为多个数据块,每个所述数据块均为指定大小;
存储模块,用于查找数据页中多个可用的存储空间,并将多个所述数据块分别存储至所述可用的存储空间;每个所述存储空间与所述数据块的大小相同;
生成模块,用于根据所述目标文件的文件信息,和每个所述数据块存储在所述数据页中的位置信息,在索引表中生成所述目标文件对应的文件项;
合成模块,用于根据所述数据页、所述索引表和文件头生成合包文件,所述文件头用于记录所述数据页的数据页信息,和所述索引表的索引表信息。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现权利要求1-8中任一项所述方法的步骤。
11.一种电子设备,其特征在于,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现权利要求1-8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110851220.5A CN113553300B (zh) | 2021-07-27 | 2021-07-27 | 文件的处理方法、装置、可读介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110851220.5A CN113553300B (zh) | 2021-07-27 | 2021-07-27 | 文件的处理方法、装置、可读介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553300A true CN113553300A (zh) | 2021-10-26 |
CN113553300B CN113553300B (zh) | 2024-05-24 |
Family
ID=78104565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110851220.5A Active CN113553300B (zh) | 2021-07-27 | 2021-07-27 | 文件的处理方法、装置、可读介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553300B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114301840A (zh) * | 2021-12-16 | 2022-04-08 | 山石网科通信技术股份有限公司 | 地理信息库的加载方法、装置及电子设备 |
CN114528258A (zh) * | 2022-02-18 | 2022-05-24 | 北京百度网讯科技有限公司 | 文件异步处理方法、装置、服务器、介质、产品及系统 |
CN116483280A (zh) * | 2023-04-26 | 2023-07-25 | 珠海妙存科技有限公司 | 固件存储方法、固件查找方法、设备及介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120191703A1 (en) * | 2011-01-20 | 2012-07-26 | Huff Kent W | Efficient genealogy registry system |
US20130145349A1 (en) * | 2011-12-05 | 2013-06-06 | Computer Associates Think, Inc. | Metadata Merging In Agent Configuration Files |
CN105069048A (zh) * | 2015-07-23 | 2015-11-18 | 东方网力科技股份有限公司 | 一种小文件存储方法、查询方法和装置 |
CN105550345A (zh) * | 2015-12-25 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
CN106055678A (zh) * | 2016-06-07 | 2016-10-26 | 国网河南省电力公司电力科学研究院 | 一种基于hadoop的全景大数据分布式存储方法 |
US9507843B1 (en) * | 2013-09-20 | 2016-11-29 | Amazon Technologies, Inc. | Efficient replication of distributed storage changes for read-only nodes of a distributed database |
CN106528801A (zh) * | 2016-11-14 | 2017-03-22 | 成都君乾信息技术有限公司 | 一种条目化数据压缩打包方法 |
CN107436736A (zh) * | 2017-08-08 | 2017-12-05 | 郑州云海信息技术有限公司 | 一种hdfs中文件的存储方法及装置 |
US20180307602A1 (en) * | 2015-12-30 | 2018-10-25 | Huawei Technologies Co.,Ltd. | Access request processing method and apparatus, and computer device |
CN108777685A (zh) * | 2018-06-05 | 2018-11-09 | 北京京东金融科技控股有限公司 | 用于处理信息的方法和装置 |
US20190228028A1 (en) * | 2016-07-13 | 2019-07-25 | Hangzhou Hikvision Digital Technology Co., Ltd. | Method and apparatus for storing, reading, and displaying plurality of multmedia files |
CN110196841A (zh) * | 2018-06-21 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 文件的存储方法和装置、查询方法和装置及服务器 |
CN110874349A (zh) * | 2018-08-13 | 2020-03-10 | 北京京东尚科信息技术有限公司 | 一种文件整理方法和装置 |
CN113039530A (zh) * | 2018-11-14 | 2021-06-25 | 零点科技公司 | 压缩式存储系统的空闲空间管理 |
CN113094374A (zh) * | 2021-04-27 | 2021-07-09 | 广州炒米信息科技有限公司 | 分布式存储和检索方法、装置及计算机设备 |
-
2021
- 2021-07-27 CN CN202110851220.5A patent/CN113553300B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120191703A1 (en) * | 2011-01-20 | 2012-07-26 | Huff Kent W | Efficient genealogy registry system |
US20130145349A1 (en) * | 2011-12-05 | 2013-06-06 | Computer Associates Think, Inc. | Metadata Merging In Agent Configuration Files |
US9507843B1 (en) * | 2013-09-20 | 2016-11-29 | Amazon Technologies, Inc. | Efficient replication of distributed storage changes for read-only nodes of a distributed database |
CN105069048A (zh) * | 2015-07-23 | 2015-11-18 | 东方网力科技股份有限公司 | 一种小文件存储方法、查询方法和装置 |
CN105550345A (zh) * | 2015-12-25 | 2016-05-04 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
US20180307602A1 (en) * | 2015-12-30 | 2018-10-25 | Huawei Technologies Co.,Ltd. | Access request processing method and apparatus, and computer device |
CN106055678A (zh) * | 2016-06-07 | 2016-10-26 | 国网河南省电力公司电力科学研究院 | 一种基于hadoop的全景大数据分布式存储方法 |
US20190228028A1 (en) * | 2016-07-13 | 2019-07-25 | Hangzhou Hikvision Digital Technology Co., Ltd. | Method and apparatus for storing, reading, and displaying plurality of multmedia files |
CN106528801A (zh) * | 2016-11-14 | 2017-03-22 | 成都君乾信息技术有限公司 | 一种条目化数据压缩打包方法 |
CN107436736A (zh) * | 2017-08-08 | 2017-12-05 | 郑州云海信息技术有限公司 | 一种hdfs中文件的存储方法及装置 |
CN108777685A (zh) * | 2018-06-05 | 2018-11-09 | 北京京东金融科技控股有限公司 | 用于处理信息的方法和装置 |
CN110196841A (zh) * | 2018-06-21 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 文件的存储方法和装置、查询方法和装置及服务器 |
CN110874349A (zh) * | 2018-08-13 | 2020-03-10 | 北京京东尚科信息技术有限公司 | 一种文件整理方法和装置 |
CN113039530A (zh) * | 2018-11-14 | 2021-06-25 | 零点科技公司 | 压缩式存储系统的空闲空间管理 |
CN113094374A (zh) * | 2021-04-27 | 2021-07-09 | 广州炒米信息科技有限公司 | 分布式存储和检索方法、装置及计算机设备 |
Non-Patent Citations (2)
Title |
---|
FRANCESCO FUSCO等: "NET-FLi: on-the-fly compression, archiving and indexing of streaming network traffic", 《PROCEEDINGS OF THE VLDB ENDOWMENT》, vol. 3, no. 1, 1 September 2010 (2010-09-01), pages 1382 - 1393, XP002639821 * |
张毕涛: "分布式存储系统小文件性能优化方案的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 4, 15 April 2018 (2018-04-15), pages 137 - 179 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114301840A (zh) * | 2021-12-16 | 2022-04-08 | 山石网科通信技术股份有限公司 | 地理信息库的加载方法、装置及电子设备 |
CN114301840B (zh) * | 2021-12-16 | 2024-02-13 | 山石网科通信技术股份有限公司 | 地理信息库的加载方法、装置及电子设备 |
CN114528258A (zh) * | 2022-02-18 | 2022-05-24 | 北京百度网讯科技有限公司 | 文件异步处理方法、装置、服务器、介质、产品及系统 |
CN114528258B (zh) * | 2022-02-18 | 2022-12-27 | 北京百度网讯科技有限公司 | 文件异步处理方法、装置、服务器、介质、产品及系统 |
CN116483280A (zh) * | 2023-04-26 | 2023-07-25 | 珠海妙存科技有限公司 | 固件存储方法、固件查找方法、设备及介质 |
CN116483280B (zh) * | 2023-04-26 | 2023-11-28 | 珠海妙存科技有限公司 | 固件存储方法、固件查找方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113553300B (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113553300B (zh) | 文件的处理方法、装置、可读介质和电子设备 | |
CN107077483B (zh) | 共享文件夹和文件的同步 | |
US6976038B2 (en) | Method and apparatus for real time creation and modification of a change log for multi-server synchronization | |
CN109885577B (zh) | 数据处理方法、装置、终端及存储介质 | |
CN110069459B (zh) | 文件监控方法、装置和电子设备 | |
CN112035529A (zh) | 缓存方法、装置、电子设备及计算机可读存储介质 | |
CN113486026A (zh) | 数据处理方法、装置、设备及介质 | |
CN109697034B (zh) | 一种数据写入方法、装置、电子设备及存储介质 | |
CN112748866A (zh) | 一种增量索引数据的处理方法和装置 | |
CN113918659A (zh) | 数据操作方法、装置、存储介质及电子设备 | |
CN111241189A (zh) | 一种同步数据的方法和装置 | |
CN110888847B (zh) | 一种回收站系统及文件回收方法 | |
CN110674082B (zh) | 移除在线文档的方法、装置、电子设备及计算机可读介质 | |
CN112131181A (zh) | 存储路径的展示方法、装置以及电子设备 | |
CN116541174A (zh) | 存储设备容量处理方法、装置、设备及存储介质 | |
CN111241137A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110413603B (zh) | 重复数据的确定方法、装置、电子设备及计算机存储介质 | |
CN109857719B (zh) | 分布式文件处理方法、装置、计算机设备以及存储介质 | |
KR102236521B1 (ko) | 데이터를 처리하기 위한 방법 및 장치 | |
CN112100159A (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
CN111782895A (zh) | 检索处理方法、装置、可读介质及电子设备 | |
CN111240657A (zh) | 用于生成sdk的方法、装置和电子设备 | |
CN112650722B (zh) | 基于android应用程序的文件处理方法、装置、电子设备和介质 | |
CN111753238A (zh) | 数据映射方法、装置和电子设备 | |
CN111787043A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |