缓存文件(单文件文件柜)格式设计

本文来自李明子csdn博客(http://blog.csdn.net/free1985),商业转载请联系博主获得授权,非商业转载请注明出处!

本文介绍了笔者2010年11月设计的缓存文件格式。

1 索引文件

1.1 概述
扩展名:cai
用途:文件块在缓存文件中的索引;
依赖文件:无;
组织方式:文件头+记录;
1.2 文件头
文件头100字节定长,其中50-61Byte为当前使用段,其它预留。文件头存储分配如表1-1所示。

表1-1 文件头存储分配
位 置 数据类型
Byte 0 …… …… ……
…… …… …… ……
Byte 50 记录总数 当前文件中的记录总数 int
Byte 54 记录长度 文件允许存入数据的最大长度 ULONGLONG
…… …… …… ……
Byte 100 …… …… ……

1.3 记录
记录320字节定长,其中Byte 308-Byte 319(12字节)预留。记录存储分配如表1-2所示。

表1-2 记录存储分配
位 置 数据类型
Byte 0 索引关键字 当前记录的索引关键字 char
Byte 256 扩展名 当前记录的扩展名 char
Byte 264 记录存在标志 当前记录是否存在可用(未删除) BOOL
Byte 268 记录时间到基准时间的秒数 当前记录创建时间 unsigned __int32
Byte 272 记录时间到基准时间的秒数 当前记录最后访问时间 unsigned __int32
Byte 276 记录访问次数 当前记录的访问次数 int
Byte 280 记录起始位置 当前记录的起始位置 ULONGLONG
Byte 288 大小 当前记录的大小 ULONGLONG
Byte 296 大小 当前记录在文件中的占用大小 ULONGLONG
Byte 304 校验值 CRC32校验值 unsigned long
Byte 308 预留 预留 预留
…… …… …… ……
Byte 319 预留 预留 预留

上表中,主要域的说明如下:

  1. 索引关键字:记录在文件中的唯一标识符。
  2. 记录存在标志:记录是否仍然存在的标志。存在则为TRUE,已删除则为FALSE。
  3. 记录时间到基准时间的秒数:这里使用记录时间到基准时间的秒数,即“日历时间”来表示当前时间。此时间基数严格依赖于编译器(如Visual C++ 7.0为1899年12月31日0时0分0秒,Visual C++6.0为1970年1月1日0时0分0秒),所以使用该文件的应用程序的编译器应采用同一时间基数,否则请编写相关时间转换代码。考虑到当前访问该文件的应用程序均由相同编译器编译而成,暂不对时间基数进行记录,需要时请在预留文件头中加入时间基准点信息。

2 缓存文件

2.1 概述
扩展名:.cad
用途:缓存文件块的存储;
依赖文件:缓存索引文件;
组织方式:文件头+记录;
文件头:100字节定长文件头(预留);
记录:变长。
记录组织方式:记录块。
2.2 记录块
记录块为以二进制码流形式存储的实体数据。

表2-1 记录块存储分配
位 置 数据类型
Byte 0 文件数据块 文件数据块 Byte
Byte …… 文件数据块 文件数据块 Byte
…… …… …… ……

上表中,主要域的说明如下:

  1. 文件数据块:以二进制码流形式写入缓存文件的文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值