用JAVA来读取DBF文件 如何实现? 具体代码怎么样?还有那javaDBF.jar 如何使用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://download.csdn.net/detail/starting0/2926718 java解析dbf文件三种方法、以及解析驱动http://download.csdn.net/detail/jiang88kang/2678996 应该是一种标准吧,我也不是很清楚,还在研究中呢。贴点信息:.dbf文件的二进制文件格式表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。 记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。 1.表头记录的结构: 字节偏移 说明 0 文件类型 0x02 FoxBASE 0x03 FoxBASE+/dBASE III PLUS,无备注 0x30 Visual FoxPro 0x43 dBASE IV SQL 表文件,无备注 0x63 dBASE IV SQL 系统文件,无备注 0x83 FoxBASE+/dBASE III PLUS,有备注 0x8B dBASE IV 有备注 0xCB dBASE IV SQL 表文件,有备注 0xF5 FoxPro 2.x(或更早版本)有备注 0xFB FoxBASE 1 - 3 最近一次更新的时间(YYMMDD)4 - 7 文件中的记录数目8 - 9 第一个数据记录的位置10 - 11 每个数据记录的长度(包括删除标记)12 - 27 保留28 表的标记0x01 具有 .cdx 结构的文件 0x02 文件包含备注。 0x04 文件是数据库(.dbc) 请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化.cdx和一个备注字段。29 代码页标记30 - 31 保留,包含 0x0032 - n 字段子记录 字段的数目决定了字段子记录的数目。表中每个字段都对应一个字段子记录。 n+1 头记录终止符(0x0D),n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。头记录中的第 8 到第 9 个字节指示数据文件中数据的起始位置。数据记录从 除标记字节开始。如果此字节为 ASCII 空格 (0x20),该记录没有删除标记, 如果第一字节为星号 (0x2A),该记录有删除标记。在标记之后是字段记录中所命名各字段中的数据2.字段子记录结构字节偏移 说明 0 - 10 字段名(最多 10 个字符 -若少于 10 则用空字符 (0x00) 填充) 11 字段类型 C-字符型 Y-货币型 N-数值型 F-浮点型 D-日期型 T-日期时间型 B-双精度型 I-整型 L-逻辑型 M-备注型 G-通用型 C-字符型(二进制) M-备注型(二进制) P-图片型 12 - 15 记录中该字段的偏移量 16 字段长度(以字节为单位) 17 小数位数 18 字段标记 0x01系统列(用户不可见) 0x02可存储 null 值的列 0x04二进制列(只适于字符型和备注型) 19 - 32 保留 格式保存的文件标头: 支持 null 值 日期时间型、货币型及双精度型数据 字符字段和备注字段标记为二进制 在数据库 (.dbc) 文件中添加表 提示 可以使用下面的公式求出表文件中字段的数目:(x - 296/32) 公式中,x 表示第一个记录的位置(表头记录的第 8 到第 9 个字节),296 表示 263(后链信息)+ 1(头记录终止符)+ 32(第一个字段子记录),32 是字段子记录的长度。因为dbf文件的记录在文件数据部分,都是用ASCII码形式存放的,所以只要读出文件头和字段类型描述区的内容,就可以直接读取dbf文件中的每条记录。参考:.dbf文件的二进制文件格式 表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。 记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。 1.表头记录的结构: 字节偏移 说明 0 文件类型 0x02 FoxBASE 0x03 FoxBASE+/dBASE III PLUS,无备注 0x30 Visual FoxPro 0x43 dBASE IV SQL 表文件,无备注 0x63 dBASE IV SQL 系统文件,无备注 0x83 FoxBASE+/dBASE III PLUS,有备注 0x8B dBASE IV 有备注 0xCB dBASE IV SQL 表文件,有备注 0xF5 FoxPro 2.x(或更早版本)有备注 0xFB FoxBASE 1 - 3 最近一次更新的时间(YYMMDD) 4 - 7 文件中的记录数目 8 - 9 第一个数据记录的位置 10 - 11 每个数据记录的长度(包括删除标记) 12 - 27 保留 28 表的标记 0x01 具有 .cdx 结构的文件 0x02 文件包含备注。 0x04 文件是数据库(.dbc) 请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化.cdx和一个备注字段。 29 代码页标记 30 - 31 保留,包含 0x00 32 - n 字段子记录 字段的数目决定了字段子记录的数目。 表中每个字段都对应一个字段子记录。 n+1 头记录终止符(0x0D), n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。 头记录中的第 8 到第 9 个字节指示数据文件中数据的起始位置。 数据记录从 除标记字节开始。 如果此字节为 ASCII 空格 (0x20),该记录没有删除标记, 如果第一字节为星号 (0x2A),该记录有删除标记。 在标记之后是字段记录中所命名各字段中的数据 2.字段子记录结构 字节偏移 说明 0 - 10 字段名(最多 10 个字符 -若少于 10 则用空字符 (0x00) 填充) 11 字段类型 C-字符型 Y-货币型 N-数值型 F-浮点型 D-日期型 T-日期时间型 B-双精度型 I-整型 L-逻辑型 M-备注型 G-通用型 C-字符型(二进制) M-备注型(二进制) P-图片型 12 - 15 记录中该字段的偏移量 16 字段长度(以字节为单位) 17 小数位数 18 字段标记 0x01系统列(用户不可见) 0x02可存储 null 值的列 0x04二进制列(只适于字符型和备注型) 19 - 32 保留 格式保存的文件标头: 支持 null 值 日期时间型、货币型及双精度型数据 字符字段和备注字段标记为二进制 在数据库 (.dbc) 文件中添加表 提示 可以使用下面的公式求出表文件中字段的数目:(x - 296/32) 公式中,x 表示第一个记录的位置(表头记录的第 8 到第 9 个字节),296 表示 263(后链信息)+ 1(头记录终止符)+ 32(第一个字段子记录),32 是字段子记录的长度。 因为dbf文件的记录在文件数据部分,都是用ASCII码形式存放的,所以只要读出文件头和字段类型描述区的内容,就可以直接读取dbf文件中的每条记录。 参考: [url=.dbf文件的二进制文件格式 表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。 记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。 1.表头记录的结构: 字节偏移 说明 0 文件类型 0x02 FoxBASE 0x03 FoxBASE+/dBASE III PLUS,无备注 0x30 Visual FoxPro 0x43 dBASE IV SQL 表文件,无备注 0x63 dBASE IV SQL 系统文件,无备注 0x83 FoxBASE+/dBASE III PLUS,有备注 0x8B dBASE IV 有备注 0xCB dBASE IV SQL 表文件,有备注 0xF5 FoxPro 2.x(或更早版本)有备注 0xFB FoxBASE 1 - 3 最近一次更新的时间(YYMMDD) 4 - 7 文件中的记录数目 8 - 9 第一个数据记录的位置 10 - 11 每个数据记录的长度(包括删除标记) 12 - 27 保留 28 表的标记 0x01 具有 .cdx 结构的文件 0x02 文件包含备注。 0x04 文件是数据库(.dbc) 请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化.cdx和一个备注字段。 29 代码页标记 30 - 31 保留,包含 0x00 32 - n 字段子记录 字段的数目决定了字段子记录的数目。 表中每个字段都对应一个字段子记录。 n+1 头记录终止符(0x0D), n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。 头记录中的第 8 到第 9 个字节指示数据文件中数据的起始位置。 数据记录从 除标记字节开始。 如果此字节为 ASCII 空格 (0x20),该记录没有删除标记, 如果第一字节为星号 (0x2A),该记录有删除标记。 在标记之后是字段记录中所命名各字段中的数据 2.字段子记录结构 字节偏移 说明 0 - 10 字段名(最多 10 个字符 -若少于 10 则用空字符 (0x00) 填充) 11 字段类型 C-字符型 Y-货币型 N-数值型 F-浮点型 D-日期型 T-日期时间型 B-双精度型 I-整型 L-逻辑型 M-备注型 G-通用型 C-字符型(二进制) M-备注型(二进制) P-图片型 12 - 15 记录中该字段的偏移量 16 字段长度(以字节为单位) 17 小数位数 18 字段标记 0x01系统列(用户不可见) 0x02可存储 null 值的列 0x04二进制列(只适于字符型和备注型) 19 - 32 保留 格式保存的文件标头: 支持 null 值 日期时间型、货币型及双精度型数据 字符字段和备注字段标记为二进制 在数据库 (.dbc) 文件中添加表 提示 可以使用下面的公式求出表文件中字段的数目:(x - 296/32) 公式中,x 表示第一个记录的位置(表头记录的第 8 到第 9 个字节),296 表示 263(后链信息)+ 1(头记录终止符)+ 32(第一个字段子记录),32 是字段子记录的长度。 因为dbf文件的记录在文件数据部分,都是用ASCII码形式存放的,所以只要读出文件头和字段类型描述区的内容,就可以直接读取dbf文件中的每条记录。 参考: http://msdn.microsoft.com/en-us/library/st4a0s68%28v=VS.71%29.aspx 好乱啊,见谅!!http://msdn.microsoft.com/en-us/library/st4a0s68%28v=VS.71%29.aspx 确实看着挺头疼的,就跟excel二进制一样,每一位都代表一种含义。 http://viwo.iteye.com/blog/106065那个JAR是让你添加到项目中的 package search;import java.io.PrintStream;import java.io.PrintWriter;public class JDBFException extends Exception { private static final long serialVersionUID = 1079752281227294498L; public JDBFException(String s) { this(s, null); } public JDBFException(Throwable throwable) { this(throwable.getMessage(), throwable); } public JDBFException(String s, Throwable throwable) { super(s); detail = throwable; } public String getMessage() { if (detail == null) return super.getMessage(); else return super.getMessage(); } public void printStackTrace(PrintStream printstream) { if (detail == null) { super.printStackTrace(printstream); return; } else { PrintStream printstream1 = printstream; printstream1.println(this); detail.printStackTrace(printstream); return; } } public void printStackTrace() { printStackTrace(System.err); } public void printStackTrace(PrintWriter printwriter) { if (detail == null) { super.printStackTrace(printwriter); return; } else { PrintWriter printwriter1 = printwriter; printwriter1.println(this); detail.printStackTrace(printwriter); return; } } private Throwable detail;}读取的结果不对,请高手指点哪里出错了 package search;public class ReadDBF { public static void main(String args[]) { readDBF(); } private static void readDBF() { try { System.out.println("正在读取文件!"); DBFReader dbfreader = new DBFReader("D:\\ZG2011格式.dbf"); for(int b = 0;b<dbfreader.getFieldCount();b++) { if(b>0) { System.out.print(",");} System.out.print(dbfreader.getField(b).getName().trim().toUpperCase()); if(b == (dbfreader.getFieldCount()-1)) System.out.print("\n"); } for(int i = 0;dbfreader.hasNextRecord();i++) { String[] aobj = dbfreader.nextRecordString(); for(int b = 0;b<dbfreader.getFieldCount();b++) { if(b>0) System.out.print(","); System.out.print(aobj[b].trim()); if(b == (dbfreader.getFieldCount()-1)) System.out.print("\n"); } } System.out.println("读取文件成功!"); } catch(Exception e) { System.out.print(e.getMessage()); } } }是这个 JAVA SE 做工控上位机的问题 关于Java类PipedReader的一个异常. 如何把做好的一个java application打包成exe文件啊 关于JOptionPane的showInputMessage的问题 关于Arrays排序的引用问题(高手请进!) 如何获得char的unicode码? 一个关于tag的使用问题(救急) 谁知道newInstance()的结构是怎样的,具体是用来做什么用的? 有没有办法让独立的Frame/JFrame "keep on top"? 自学,渣渣,有个简单问题不懂,希望问下 请问错在哪里呢? 哪些类中有nextLine()方法
http://download.csdn.net/detail/jiang88kang/2678996
贴点信息:
.dbf文件的二进制文件格式表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。
记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。
1.表头记录的结构:
字节偏移 说明
0 文件类型
0x02 FoxBASE
0x03 FoxBASE+/dBASE III PLUS,无备注
0x30 Visual FoxPro
0x43 dBASE IV SQL 表文件,无备注
0x63 dBASE IV SQL 系统文件,无备注
0x83 FoxBASE+/dBASE III PLUS,有备注
0x8B dBASE IV 有备注
0xCB dBASE IV SQL 表文件,有备注
0xF5 FoxPro 2.x(或更早版本)有备注
0xFB FoxBASE
1 - 3 最近一次更新的时间(YYMMDD)
4 - 7 文件中的记录数目
8 - 9 第一个数据记录的位置
10 - 11 每个数据记录的长度(包括删除标记)
12 - 27 保留
28 表的标记
0x01 具有 .cdx 结构的文件
0x02 文件包含备注。
0x04 文件是数据库(.dbc)
请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化.cdx和一个备注字段。
29 代码页标记
30 - 31 保留,包含 0x00
32 - n 字段子记录
字段的数目决定了字段子记录的数目。
表中每个字段都对应一个字段子记录。
n+1 头记录终止符(0x0D),
n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。
头记录中的第 8 到第 9 个字节指示数据文件中数据的起始位置。
数据记录从 除标记字节开始。
如果此字节为 ASCII 空格 (0x20),该记录没有删除标记, 如果第一字节为星号 (0x2A),该记录有删除标记。
在标记之后是字段记录中所命名各字段中的数据
2.字段子记录结构
字节偏移 说明
0 - 10 字段名(最多 10 个字符 -若少于 10 则用空字符 (0x00) 填充)
11 字段类型
C-字符型
Y-货币型
N-数值型
F-浮点型
D-日期型
T-日期时间型
B-双精度型
I-整型
L-逻辑型
M-备注型
G-通用型
C-字符型(二进制)
M-备注型(二进制)
P-图片型
12 - 15 记录中该字段的偏移量
16 字段长度(以字节为单位)
17 小数位数
18 字段标记
0x01系统列(用户不可见)
0x02可存储 null 值的列
0x04二进制列(只适于字符型和备注型)
19 - 32 保留
格式保存的文件标头:
支持 null 值
日期时间型、货币型及双精度型数据
字符字段和备注字段标记为二进制
在数据库 (.dbc) 文件中添加表
提示 可以使用下面的公式求出表文件中字段的数目:(x - 296/32) 公式中,x 表示第一个记录的位置(表头记录的第 8 到第 9 个字节),296 表示 263(后链信息)+ 1(头记录终止符)+ 32(第一个字段子记录),32 是字段子记录的长度。
因为dbf文件的记录在文件数据部分,都是用ASCII码形式存放的,所以只要读出文件头和字段类型描述区的内容,就可以直接读取dbf文件中的每条记录。参考:
.dbf文件的二进制文件格式 表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。 记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。 1.表头记录的结构: 字节偏移 说明 0 文件类型 0x02 FoxBASE 0x03 FoxBASE+/dBASE III PLUS,无备注 0x30 Visual FoxPro 0x43 dBASE IV SQL 表文件,无备注 0x63 dBASE IV SQL 系统文件,无备注 0x83 FoxBASE+/dBASE III PLUS,有备注 0x8B dBASE IV 有备注 0xCB dBASE IV SQL 表文件,有备注 0xF5 FoxPro 2.x(或更早版本)有备注 0xFB FoxBASE 1 - 3 最近一次更新的时间(YYMMDD) 4 - 7 文件中的记录数目 8 - 9 第一个数据记录的位置 10 - 11 每个数据记录的长度(包括删除标记) 12 - 27 保留 28 表的标记 0x01 具有 .cdx 结构的文件 0x02 文件包含备注。 0x04 文件是数据库(.dbc) 请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化.cdx和一个备注字段。 29 代码页标记 30 - 31 保留,包含 0x00 32 - n 字段子记录 字段的数目决定了字段子记录的数目。 表中每个字段都对应一个字段子记录。 n+1 头记录终止符(0x0D), n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。 头记录中的第 8 到第 9 个字节指示数据文件中数据的起始位置。 数据记录从 除标记字节开始。 如果此字节为 ASCII 空格 (0x20),该记录没有删除标记, 如果第一字节为星号 (0x2A),该记录有删除标记。 在标记之后是字段记录中所命名各字段中的数据 2.字段子记录结构 字节偏移 说明 0 - 10 字段名(最多 10 个字符 -若少于 10 则用空字符 (0x00) 填充) 11 字段类型 C-字符型 Y-货币型 N-数值型 F-浮点型 D-日期型 T-日期时间型 B-双精度型 I-整型 L-逻辑型 M-备注型 G-通用型 C-字符型(二进制) M-备注型(二进制) P-图片型 12 - 15 记录中该字段的偏移量 16 字段长度(以字节为单位) 17 小数位数 18 字段标记 0x01系统列(用户不可见) 0x02可存储 null 值的列 0x04二进制列(只适于字符型和备注型) 19 - 32 保留 格式保存的文件标头: 支持 null 值 日期时间型、货币型及双精度型数据 字符字段和备注字段标记为二进制 在数据库 (.dbc) 文件中添加表 提示 可以使用下面的公式求出表文件中字段的数目:(x - 296/32) 公式中,x 表示第一个记录的位置(表头记录的第 8 到第 9 个字节),296 表示 263(后链信息)+ 1(头记录终止符)+ 32(第一个字段子记录),32 是字段子记录的长度。 因为dbf文件的记录在文件数据部分,都是用ASCII码形式存放的,所以只要读出文件头和字段类型描述区的内容,就可以直接读取dbf文件中的每条记录。 参考: [url=.dbf文件的二进制文件格式 表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。 记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。 1.表头记录的结构: 字节偏移 说明 0 文件类型 0x02 FoxBASE 0x03 FoxBASE+/dBASE III PLUS,无备注 0x30 Visual FoxPro 0x43 dBASE IV SQL 表文件,无备注 0x63 dBASE IV SQL 系统文件,无备注 0x83 FoxBASE+/dBASE III PLUS,有备注 0x8B dBASE IV 有备注 0xCB dBASE IV SQL 表文件,有备注 0xF5 FoxPro 2.x(或更早版本)有备注 0xFB FoxBASE 1 - 3 最近一次更新的时间(YYMMDD) 4 - 7 文件中的记录数目 8 - 9 第一个数据记录的位置 10 - 11 每个数据记录的长度(包括删除标记) 12 - 27 保留 28 表的标记 0x01 具有 .cdx 结构的文件 0x02 文件包含备注。 0x04 文件是数据库(.dbc) 请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化.cdx和一个备注字段。 29 代码页标记 30 - 31 保留,包含 0x00 32 - n 字段子记录 字段的数目决定了字段子记录的数目。 表中每个字段都对应一个字段子记录。 n+1 头记录终止符(0x0D), n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。 头记录中的第 8 到第 9 个字节指示数据文件中数据的起始位置。 数据记录从 除标记字节开始。 如果此字节为 ASCII 空格 (0x20),该记录没有删除标记, 如果第一字节为星号 (0x2A),该记录有删除标记。 在标记之后是字段记录中所命名各字段中的数据 2.字段子记录结构 字节偏移 说明 0 - 10 字段名(最多 10 个字符 -若少于 10 则用空字符 (0x00) 填充) 11 字段类型 C-字符型 Y-货币型 N-数值型 F-浮点型 D-日期型 T-日期时间型 B-双精度型 I-整型 L-逻辑型 M-备注型 G-通用型 C-字符型(二进制) M-备注型(二进制) P-图片型 12 - 15 记录中该字段的偏移量 16 字段长度(以字节为单位) 17 小数位数 18 字段标记 0x01系统列(用户不可见) 0x02可存储 null 值的列 0x04二进制列(只适于字符型和备注型) 19 - 32 保留 格式保存的文件标头: 支持 null 值 日期时间型、货币型及双精度型数据 字符字段和备注字段标记为二进制 在数据库 (.dbc) 文件中添加表 提示 可以使用下面的公式求出表文件中字段的数目:(x - 296/32) 公式中,x 表示第一个记录的位置(表头记录的第 8 到第 9 个字节),296 表示 263(后链信息)+ 1(头记录终止符)+ 32(第一个字段子记录),32 是字段子记录的长度。 因为dbf文件的记录在文件数据部分,都是用ASCII码形式存放的,所以只要读出文件头和字段类型描述区的内容,就可以直接读取dbf文件中的每条记录。
参考: http://msdn.microsoft.com/en-us/library/st4a0s68%28v=VS.71%29.aspx
http://msdn.microsoft.com/en-us/library/st4a0s68%28v=VS.71%29.aspx
那个JAR是让你添加到项目中的
import java.io.PrintStream;
import java.io.PrintWriter;public class JDBFException extends Exception {
private static final long serialVersionUID = 1079752281227294498L; public JDBFException(String s) {
this(s, null);
} public JDBFException(Throwable throwable) {
this(throwable.getMessage(), throwable);
} public JDBFException(String s, Throwable throwable) {
super(s);
detail = throwable;
} public String getMessage() {
if (detail == null)
return super.getMessage();
else
return super.getMessage();
} public void printStackTrace(PrintStream printstream) {
if (detail == null) {
super.printStackTrace(printstream);
return;
} else {
PrintStream printstream1 = printstream;
printstream1.println(this);
detail.printStackTrace(printstream); return;
}
} public void printStackTrace() {
printStackTrace(System.err);
} public void printStackTrace(PrintWriter printwriter) {
if (detail == null) {
super.printStackTrace(printwriter);
return;
} else {
PrintWriter printwriter1 = printwriter;
printwriter1.println(this);
detail.printStackTrace(printwriter);
return;
}
} private Throwable detail;}
读取的结果不对,请高手指点哪里出错了
public class ReadDBF {
public static void main(String args[])
{
readDBF();
}
private static void readDBF()
{
try
{
System.out.println("正在读取文件!");
DBFReader dbfreader = new DBFReader("D:\\ZG2011格式.dbf");
for(int b = 0;b<dbfreader.getFieldCount();b++)
{
if(b>0)
{ System.out.print(",");}
System.out.print(dbfreader.getField(b).getName().trim().toUpperCase());
if(b == (dbfreader.getFieldCount()-1))
System.out.print("\n");
}
for(int i = 0;dbfreader.hasNextRecord();i++)
{
String[] aobj = dbfreader.nextRecordString();
for(int b = 0;b<dbfreader.getFieldCount();b++)
{
if(b>0)
System.out.print(",");
System.out.print(aobj[b].trim());
if(b == (dbfreader.getFieldCount()-1))
System.out.print("\n");
}
}
System.out.println("读取文件成功!");
}
catch(Exception e)
{
System.out.print(e.getMessage());
}
}
}
是这个