第一部分是结构描述,即文件头信息;共32个字节(0~31)
第二部分是表本身的内容,该部分又分为两个部分:
前一部分是表的结构说明,共32个字节具体的内容见下表1
后一部分是字段描述区,从第32个字节开始到十六进制结束字符0x0D。具体包括内容见表2
BDF文件头的详细格式:
在文件中的位置 |
内容 |
说明 |
0 |
1个字节 |
表示当前的版本信息 |
1-3 |
3个字节 |
表示最近的更新日期,按照YYMMDD格式。 |
4-7 |
1个32位数 |
文件中的记录条数。 |
8-9 |
1个16位数 |
文件头中的字节数。 |
10-11 |
1个16位数 |
一条记录中的字节长度。 |
12-13 |
2个字节 |
保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。 |
14 |
1个字节 |
表示未完成的操作。 |
15 |
1个字节 |
dBASE IV编密码标记。 |
16-27 |
12个字节 |
保留字节,用于多用户处理时使用。 |
28 |
1个字节 |
DBF文件的MDX标识。在创建一个DBF 表时 ,如果使用了MDX 格式的索引文件,那么 DBF 表的表头中的这个字节就自动被设置了一个标志,当你下次试图重新打开这个DBF表的时候,数据引擎会自动识别这个标志,如果此标志为真,则数据引擎将试图打开相应的MDX 文件。 |
29 |
1个字节 |
Language driver ID. |
30-31 |
2个字节 |
保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。 |
32-X |
(n*32)个字节 |
记录项信息描述数组。n表示记录项的个数。这个数组的结构在表2.8中有详细的解释。 |
X+1 |
1个字节 |
作为记录项终止标识。 |
位置 |
内容 |
说明 |
0-10 |
11个字节 |
记录项名称,是ASCII码值。 |
11 |
1个字节 |
记录项的数据类型,是ASCII码值。(B、C、D、G、L、M和N,具体的解释见表2.9)。 |
12-15 |
4个字节 |
保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。 |
16 |
1个字节 |
记录项长度,二进制型。 |
17 |
1个字节 |
记录项的精度,二进制型。 |
18-19 |
2个字节 |
保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。 |
20 |
1个字节 |
工作区ID。 |
21-30 |
10个字节 |
保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。 |
31 |
1个字节 |
MDX标识。如果存在一个MDX 格式的索引文件,那么这个记录项为真,否则为空。 |
低字节在前,所以要取字段总数时,应该用如下方法:
记录总数 = 第4个字节+256 1次方*第5字节+256 2*第6字节+256 3*第7字节
注意:
字段名 以ASCII码方式存放,最大长度是10个字符,若字段名长度少于10个字符则以空字符(0x00)填充
字段类型 以ASCII码方式存放,1个字符,其值为
Field type:
C – Character
Y – Currency
N – Numeric
F – Float
D – Date
T – DateTime
B – Double
I – Integer
L – Logical
M – Memo
G – General
C – Character (binary)
M – Memo (binary)
P – Picture
+ – Autoincrement (dBase Level 7)
O – Double (dBase Level 7)
@ – Timestamp (dBase Level 7)
DBF数据表文件的结构结束标志为"0x0D",占1个字节。对于VFP表文件从"0x0D"所在的字节开始的263B用于描述自由表或数据库表的相关信息(若为自由表则取值全为零)。
其VFP表文件长度 = 32(文件头)+32*字段个数+1(结束标志)+263。然后是数据部分记录1、记录2……记录n
各记录均为定长格式,以ASCII码方式顺序存放。每个记录的第一个字节是删除标志,若记录被删除,则该字节为0x2A即"*";否则为0x20即空格。
各记录间无分隔符
整个文件的结束标志为0x1A,位于最后一个记录之后的一个字节中。
评论