版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.标准的 DBF文件,是由头文件和实体信息两部分构成(如图所示)。文件头记录 1记录 2记录 3记录 4记录 nDBF文件的结构1) 文件的文件头其中文件头部分的长度是不定长的, 它主要对 DBF文件作了一些总体说明(表), 其中最主要的是对这个 DBF文件的记录项的信息进行了详细地描述,比如对每个记录项的名称、数据类型、长度等信息都有具体的说明。在文件中内容说明的位置01 个字节表示当前的版本信息133 个字节表示最近的更新日期,按照YYMMDD 格式。471个 32 位数文件中的记录条数。891个 16 位数文件头中的字节数。10111个 16 位数一条记录中的字节长度。12132 个字节
2、保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。141 个字节表示未完成的操作。15 1 个字节dBASE IV 编密码标记。162712 个字节保留字节,用于多用户处理时使用。281 个字节DBF文件的 MDX 标识。在创建一个 DBF 表时 ,如果使用了MDX格式的索引文件,那么DBF 表的表头中的这个字节就自动被设置了一个标志,当你下次试图重新打开这个DBF表的时候,数据引擎会自动识别这个标志,如果此标志为真,则数据引擎将试图打开相应的MDX文件。291 个字节Language driver ID.30312 个字节保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。
3、32 X(n*32 )个字记录项信息描述数组。 n 表示记录项的个数。 这个数组的结构节在表 2.8 中有详细的解释。X11 个字节作为记录项终止标识。文件( .dbf )的文件头.位置内容说明0 1011 个字节记录项名称,是 ASCII码值。111 个字节记录项的数据类型,是ASCII 码值。( B、 C、 D、G、 L、 M和N,具体的解释见表 2.9 )。12 154 个字节记录中该字段的偏移量。161 个字节记录项长度,二进制型。171 个字节记录项的精度,二进制型。201 个字节工作区 ID 。21 3010 个字节保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。31
4、1 个字节MDX 标识。如果存在一个 MDX 格式的索引文件, 那么这个记录项为真,否则为空。记录项信息描述代码数据类型允许输入的数据B二进制型双精度型各种字符。C字符型各种字符。D日期型用于区分年、 月、日的数字和一个字符,内部存储按照 YYYYMMDD格式。G(Generalor OLE)通用类型各种字符。N数值型 (Numeric)- . 0 1 2 3 4 5 6 7 8 9L逻辑型( Logical)? Y y N n T t F f (?表示没有初始化 ) 。M(Memo)各种字符。Y货币型F浮点型I整形P图片表 2.9 dbf文件中的数据类型2) 文件的实体信息实体信息部分就是一
5、条条记录, 每条记录都是由若干个记录项构成, 因此只要依次循环读取每条记录就可以了。3) 一个读取 dbf 文件的例子假设要读取一个名为soil的 dbf 文件(存储了土地利用信息),它含有8 个记录项,记录项信息如表所示:记录项名称数据类型长度小数位数Area数值型( double )3115.Perimeter数值型( double )3115soils_数值型( int )110soils_id数值型( int )110soil_code字符型( character)3无Suit字符型( character)1无Centroid_x数值型( double )3115Centroid_y数
6、值型( double )3115dbf文件中的数据类型2、行情文件格式说明:(1)、表文件由头记录及数据记录组成。头记录定义该表的结构及与表相关的其他信息。数据记录紧接在头记录之后,包含字段中实际的文本。记录的长度等于所有字段定义的长度之和(以字节为单位)。(2)、头记录以终止符(0x0D )结束,数据记录以终止符(0x1A )结束。(3)、表文件中存储整数时低位字节在前。(4)、数据记录从删除标记字节开始。如果删除标记字节为ASCII 空格 (0x20) ,则表示该记录未被删除,如果该字节为星号(0x2A) ,则表示该记录被删除。在删除标记之后是字段记录中所命名的各字段的数据。( 5)、数据
7、记录都是用 ASCII 码形式存放的,所以只要读出文件头和字段类型描述区的内容,就可以直接读取 dbf 文件中的每条记录。文件头部结构(32 字节)位置长度含义备注01文件类型0x03 , FoxBASE+/dBASE III PLUS,无备注1 - 33最近一次更新的时间(YYMMDD )4 - 74文件中的记录数目8 - 92文件中的第一个数据记录的位置10 - 112每个数据记录的长度(包括删除标记)12 - 3120保留.32 - n字段子记录字段的数目决定了字段子记录的数目。字段记录结构(32 字节)位置长度说明备注0 - 1011字段名最多 10 个字符,若少于10 则用空字符填充
8、111字段类型C-字符型Y- 货币型N-数值型F-浮点型D-日期型T- 日期时间型B- 双精度型I- 整型L- 逻辑型M- 备注型G-通用型C-字符型(二进制)M- 备注型(二进制)P-图片型12 - 154记录中该字段的偏移量(16 进制)161字段长度以字节为单位171小数位数以字节为单位18 - 3114保留n+1头记录终止符( 0x0D ),n+2到 n+264此范围内的263 个字节包含后链信息 (相关数据库(.dbc)的相对路径)。如果第一个字节为0x00 ,则该文件不与数据库关联。因此数据库文件本身总是包含0x00 。数据记录从除标记字节开始。如果此字节为ASCII 空格(0x2
9、0) ,该记录没有删除标记,如果第一字节为星号(0x2A), 该记录有删除标记。在标记之后是字段记录中所命名各字段中的数据下面是读取这个dbf 文件的代码:void OnReadDbf(CString Dbf).FILE*m_Dbf;/*Dbf文件指针/ 打开 dbf 文件if(m_Dbf(Dbf,rb)=NULL)return;int i,j;/*读取 dbf 文件的文件头开始BYTE version;fread(&version,1,1,m_Dbf);BYTE date3;for(i=0;i3;i+)fread(date+i,1,1,m_Dbf);int RecordNum;/*fread
10、(&RecordNum,sizeof(int),1,m_Dbf);short HeaderByteNum;fread(&HeaderByteNum,sizeof(short), 1,m_Dbf);short RecordByteNumfread(&RecordByteNum,sizeof(short), 1,m_Dbf);.short Reserved1;fread(&Reserved1,sizeof(short), 1,m_Dbf);BYTE Flag4s;fread(&Flag4s,sizeof(BYTE),1,m_Dbf);BYTE EncrypteFlag;fread(&Encrypt
11、eFlag,sizeof(BYTE),1,m_Dbf);for(i=0;i3;i+)fread(&Unused,sizeof(int),1,m_Dbf);BYTE MDXFlag;fread(&MDXFlag,sizeof(BYTE),1,m_Dbf);BYTE LDriID;fread(&LDriID,sizeof(BYTE),1,m_Dbf);short Reserved2;fread(&Reserved2,sizeof(short), 1,m_Dbf);BYTE name11;BYTE fieldType;.int Reserved3;BYTE fieldLength;BYTE deci
12、malCount;short Reserved4;BYTE workID;short Reserved55;BYTE mDXFlag1;int fieldscount;fieldscount = (HeaderByteNum - 32) / 32;/读取记录项信息共有8 个记录项for(i=0;i HeaderByteNum;i+)/FieldName-11bytesfread(name,11, 1,m_Dbf);/FieldType-1bytesfread(&fieldType,sizeof(BYTE), 1,m_Dbf);/Reserved3-4bytesReserved3=0;fread
13、(&Reserved3, sizeof(int),1,m_Dbf);/FieldLength-1bytesfread(&fieldLength,sizeof(BYTE), 1,m_Dbf);/DecimalCount-1bytesfread(&decimalCount,sizeof(BYTE), 1,m_Dbf);/Reserved4-2bytes.Reserved4=0;fread(&Reserved4, sizeof(short),1,m_Dbf);/WorkID-1bytesfread(&workID,sizeof(BYTE), 1,m_Dbf);/Reserved5-10bytesfo
14、r(j=0;j5;j+)fread(Reserved5+j,sizeof(short),1,m_Dbf);/MDXFlag1-1bytesfread(&mDXFlag1,sizeof(BYTE),1,m_Dbf);BYTE terminator;fread(&terminator,sizeof(BYTE), 1,m_Dbf);/ 读取 dbf 文件头结束double Area,Perimeter,Centroid_y,Centroid_x;int Soils_,Soils_id;CString Soil_code,suit;BYTEdeleteFlag;char media31;/读取 dbf
15、 文件记录开始for(i=0;iRecordNum;i+).fread(&deleteFlag,sizeof(BYTE), 1,m_Dbf);/ 读取 Area double for(j=0;j31;j+)fread(media+j, sizeof(char),1,m_Dbf);Area =atof(media);/ 读取 Perimeter double for(j=0;j31;j+)fread(media+j, sizeof(char),1,m_Dbf);Perimeter =atof(media);/读取 soils_intfor(j=0;j31;j+)strcpy(media+j,);
16、for(j=0;j11;j+)fread(media+j, sizeof(char),1,m_Dbf);Soils_=atoi(media);/读取 Soils_idintfor(j=0;j31;j+)strcpy(media+j,);for(j=0;j11;j+)fread(media+j, sizeof(char),1,m_Dbf);.Soils_id=atoi(media);/ 读取 soil_code string for(j=0;j31;j+)strcpy(media+j,);for(j=0;j3;j+)fread(media+j, sizeof(char),1,m_Dbf);Soil_code=media;/ 读取 suit string for(j=0;j31;j+)strcpy(media+j,);for(j=0;j1;j+)fread(media+j, sizeof(char),1,m_Dbf);suit =media;/ 读取 Centroid_y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年绥化明水县公开招聘公益性岗位人员80人考试参考题库及答案详解
- 重要客户订单延期交货协商函(4篇范文)
- 科学梦想启航处小学主题班会课件
- 2026年年度销售目标达成汇报书3篇范本
- 文明礼仪教育:从小做起小学主题班会课件
- 分析与应用习题及答案展示
- 2026年饮品冷饮店从业人员培训考试试卷及答案
- 美德传递:小学主题班会中德育教育的力量
- 新国家开放大学电大专科《行政法与行政诉讼法》简答题题库及答案
- 2026年渭北中心医院招聘(10人)笔试备考题库及答案详解
- 2026年国家电投集团苏州审计中心选聘15人笔试备考试题及答案解析
- 全员安全生产责任制各部门及各级人员的安全责任清单(含安全职责、履责要求、履责记录)
- 10KV高配运行管理规定培训课件
- 盾构施工监测方案
- 学校全体教职员工安全培训
- 江西省南昌市2026届高三年级下学期四月检测(二模)生物试题
- 2026年全科医生转岗培训题库高频重点提升及答案详解(真题汇编)
- 2026数字重庆政务科技有限公司招聘专业人才31人笔试历年备考题库附带答案详解
- 公文筐测验模拟测试题及答案(一)
- 滑膜肉瘤2025年CSCO指南
- 2025中国智能门锁行业白皮书
评论
0/150
提交评论