常见数据打包存储模式方式

1.目录结构

   最常见的一种,目录结构中存储了一个目录索引表,这个目录索引表中包含了与文件包内的资源文件相关的信息,例如文件名、文件属性、文件偏移、文件大小等

================================结构方式=======================

----文件头----------------

         +0   文件头标识符 (Magic number)

         +4   目录索引数量

----目录索引表----------

      索引1

         +0    文件名

         +4    文件偏移

         +N   文件大小

      索引2

         +0    文件名

         +4    文件偏移

         +N   文件大小

      ..............

      索引N

         +0    文件名

         +4    文件偏移

         +N   文件大小

------------文件数据-------------------

       文件数据1 

                  文件数据

       文件数据2

                  文件数据

       文件数据n 

                  文件数据

2.分目录结构

     分目录结构和目录结构相似,区别在于分目录结构将目录索引表分成多个独立的部分,每一个部分都独立存储。

    例如将目录索引表分成文件信息表和文件名表

================================结构方式=======================

----文件头----------------

         +0   文件头标识符 (Magic number)

         +4   索引数量

         +8   文件信息表的偏移地址

         +C   文件名表的偏移地址

----文件信息表------------

      索引1

         +0    文件偏移

         +N   文件大小

      索引2

         +0    文件偏移

         +N   文件大小

       ................

      索引n

         +0    文件偏移

         +N   文件大小

----文件名表----------------

      索引1

         +N   文件名

      索引2

         +N   文件名

       ................

      索引n

         +N   文件名

------------文件数据--------

       文件数据1 

                  文件数据

       文件数据2

                  文件数据

       文件数据n 

                  文件数据

3.外部目录结构

     外部目录结构和目录结构相似,区别是外部目录结构将目录索引表和文件数据分别存储在两个不同的文件中

    存储目录索引表的文件和存储文件数据的文件使用相同文件名,但后缀名不同。例如 “data.idx”(存储目录索引表)和“data.dat”(存储文件数据)

data.idx结构(目录索引表)

================================结构方式=======================

----文件头----------------

         +0   目录索引的数量 (4字节/8字节,自己设置)

----目录索引表----------

      索引1

         +0    文件名

         +4    文件数据偏移

         +N   文件大小

      索引2

         +0    文件名

         +4    文件数据偏移

         +N   文件大小

      ..............

      索引N

         +0    文件名

         +4    文件数据偏移

         +N   文件大小

data.dat结构(目录索引表)

================================结构方式=======================

------------文件数据--------

       文件数据1 

                  文件数据

       文件数据2

                  文件数据

       文件数据n 

                  文件数据

4.数据块结构

   使用数据块结构通常将每个资源文件按顺序存储。每个按顺序存储自己的文件头,文件头含有该文件相关的信息

================================结构方式=======================

 ----文件头----------------

         +0   文件头标识符 (Magic number)

         +4   包内有多少个文件

----数据块----------------

文件1:

----文件头1----------------

         +0   文件头标识符 (Magic number)

         +4   文件大小

       文件数据1 

                  文件数据

----文件头2----------------

         +0   文件头标识符 (Magic number)

         +4   文件大小

       文件数据2 

                  文件数据

        ..........

----文件头n----------------

         +0   文件头标识符 (Magic number)

         +4   文件大小

       文件数据n

                  文件数据

5.分数据块结构

    分数据块结构和数据块结构的打包文件基本结构一样,但包内每一个文件都存储到一个小数据块里面,通常每个小数据块的大小是一样的。

================================结构方式=======================

 ----文件头----------------

         +0   文件头标识符 (Magic number)

         +4   包内有多少个文件

----数据块----------------

文件1:

----文件头1----------------

         +0   文件头标识符 (Magic number)

         +4   文件大小

         +8   有多少个数据块

         +C   每个数据块的大小

       文件数据1 

                  文件数据1

                  文件数据2

                        ......

                  文件数据n

文件2:

----文件头2----------------

         +0   文件头标识符 (Magic number)

         +4   文件大小

         +8   有多少个数据块

         +C   每个数据块的大小

       文件数据2 

                  文件数据1

                  文件数据2

                        ......

                  文件数据n

文件n:

----文件头n----------------

         +0   文件头标识符 (Magic number)

         +4   文件大小

         +8   有多少个数据块

         +C   每个数据块的大小

       文件数据n

                  文件数据1

                  文件数据2

                        ......

                  文件数据n

6.树型结构

================================结构方式=======================

 ----文件头----------------

         +0   文件头标识符 (Magic number)

         +4   根目录下有多少个文件夹

         +8   包内有多少个文件

 ----文件夹----------------

文件夹1:

         +n       文件夹名称

         +n+4   有多少个子文件夹在本文件夹下

         +n+8   本文件夹下第一个子文件的偏移地址

         +n+C   有多少个文件在本文件夹下

         +n+10  本文件夹下第一个文件项的偏移地址

文件夹2:

         +n       文件夹名称

         +n+4   有多少个子文件夹在本文件夹下

         +n+8   本文件夹下第一个子文件的偏移地址

         +n+C   有多少个文件在本文件夹下

         +n+10  本文件夹下第一个文件项的偏移地址

文件夹n:

         +n       文件夹名称

         +n+4   有多少个子文件夹在本文件夹下

         +n+8   本文件夹下第一个子文件的偏移地址

         +n+C   有多少个文件在本文件夹下

         +n+10  本文件夹下第一个文件项的偏移地址

 ----文件项----------------

文件项1:

         +0   文件数据的偏移地址

         +4   文件数据的大小

         +8   文件名称

文件项2:

         +0   文件数据的偏移地址

         +4   文件数据的大小

         +8   文件名称

文件项n:

         +0   文件数据的偏移地址

         +4   文件数据的大小

         +8   文件名称

----文件数据----------------

文件数据1:

         +n   文件数据

文件数据2:

         +n   文件数据

文件数据n:

         +n   文件数据

发布了343 篇原创文章 · 获赞 57 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/jadeshu/article/details/103941062