【文件属性】:
文件名称:基于javadbf-0[1].4.0.jar包的dbf文件操作源码
文件大小:21KB
文件格式:RAR
更新时间:2011-12-25 10:20:09
java 源码 dbf 读写
一般的dbf文件都是数据库操作文件,用c语言进行操作的dll很多,但是java操作的很少,我找到了一个javadbf-0[1].4.0.jar的包,但是操作效果很不理想,尤其是末尾空格和乱码问题,于是我在这个jar包的基础上进行进一步开发,在尽量不影响效率的情况下,增加了对dbf各个方面的处理功能:查询,创建,copy文件结构等功能,目前没有发现bug,说明文档在程序中很详细,以下是我的说明演示部分代码,此源码需要5个积分,主要是因为可能需求不多,卖得少,成本高,望大家海涵:)
演示部分源码:
public static void main(String[] args) {
// TODO Auto-generated method stub
/************************************************/
/* 初始化dbf操作对象 */
/************************************************/
DBF_tool dbf = new DBF_tool();
/************************************************/
/* 创建dbf操作,生成"creatDBF.dbf",此处采用相对路径 */
/* 也可以用绝对路径进行创建 */
/************************************************/
System.out.println("正在创建dbf文件:creatDBF.dbf ...");
dbf.createFile("creatDBF.dbf");
//dbf.createFile("D:\\creatDBF.dbf");//绝对路径
/************************************************/
/* 创建dbf表头信息,此处只能一次性输入所有表头信息 */
/* 表头信息由FiledInfor类生成,然后放入vector中 */
/* 此处为:编号,姓名,年龄,salary(薪水),出生日期 */
/************************************************/
System.out.println("创建dbf文件表头信息 ...");
FiledInfor filedinfor;//表头信息对象
Vector vecTitle = new Vector();
filedinfor = new FiledInfor();
filedinfor.filedDataType = DBF_tool.FIELD_TYPE_C;//类型
filedinfor.filedName = "编 号"; //名称
filedinfor.fieldLength = 8; //长度
vecTitle.add(filedinfor);
filedinfor = new FiledInfor();
filedinfor.filedDataType = DBF_tool.FIELD_TYPE_C;
filedinfor.filedName = "姓 名";
filedinfor.fieldLength = 12;
vecTitle.add(filedinfor);
filedinfor = new FiledInfor();
filedinfor.filedDataType = DBF_tool.FIELD_TYPE_N;
filedinfor.filedName = "年 龄";
filedinfor.fieldLength = 5;
filedinfor.decimalCount = 0; //精度
vecTitle.add(filedinfor);
filedinfor = new FiledInfor();
filedinfor.filedDataType = DBF_tool.FIELD_TYPE_F;
filedinfor.filedName = "salary";//不支持"salary(**)"这种方式,但支持中英文结合
filedinfor.fieldLength = 7;
filedinfor.decimalCount = 2;
vecTitle.add(filedinfor);
filedinfor = new FiledInfor();
filedinfor.filedDataType = DBF_tool.FIELD_TYPE_D;
filedinfor.filedName = "出生日期";
vecTitle.add(filedinfor);
dbf.writeFiled(vecTitle);
/************************************************/
/* 创建dbf表内容信息 */
/************************************************/
System.out.println("向dbf文件中添加内容 ...");
String dbfLine;//dbf每行的内容,filed之间以","分隔
dbfLine = "000001,经理,36,15000.00,88-12-9";
dbf.writeDBFLine(dbfLine);
dbfLine = "000002,助理,30,10000.00,82-3-17";
dbf.writeDBFLine(dbfLine);
dbfLine = "000003,小兵1,25,4000.12,87-5-20";
dbf.writeDBFLine(dbfLine);
dbfLine = "000004,小兵2,28,4200,07-2-15";
dbf.writeDBFLine(dbfLine);
dbfLine = "000005,小兵3,29,3800.00,02-4-23";
dbf.writeDBFLine(dbfLine);
/************************************************/
/* 关闭创建dbf表操作,此为必须操作 */
/************************************************/
System.out.println("创建表操作结束!");
dbf.close();
/************************************************/
/* 打开dbf操作,绝对路径和相对路径皆可 */
/************************************************/
dbf = new DBF_tool();
System.out.println("正在打开dbf文件:creatDBF.dbf ...");
dbf.openFile("creatDBF.dbf");
System.out.println("分析...");
/************************************************/
/* 得到dbf的行列个数 */
/************************************************/
System.out.println("此dbf文件的数据有:"+dbf.DBFGetRecordCount()+
"行,"+dbf.DBFGetFieldCount()+"列,");
/*******************************************************/
/* 得到dbf各个字段的详细信息(目前可以得到:名称、类型、长度、精度 */
/*******************************************************/
System.out.println("各个字段的详细信息为:");
for (int i = 0; i < dbf.DBFGetFieldCount(); i++) {
filedinfor = dbf.getDBFFiledInfor(i);
System.out.println("name:"+filedinfor.filedName+" length:"+filedinfor.fieldLength);
}
/************************************************/
/* 得到指定名称在dbf中的位置 */
/************************************************/
System.out.println("其中,年龄在dbf表中的位置是:"+dbf.getDBFFiledNum("年 龄"));
/************************************************/
/* 得到dbf中指定行数和列数的值,参数从0计 */
/************************************************/
System.out.println("第3行,第2列的值是:"+dbf.getContent(2, 1));
dbf.close();
/************************************************/
/* 复制dbf文件表头部分功能 */
/************************************************/
dbf = new DBF_tool();
System.out.println("将creatDBF.dbf的文件结构复制到新的文件copy.dbf中...");
dbf.copyDBFtitle("creatDBF.dbf", "copy.dbf");
dbf.close();
System.out.println("演示结束!");
}
【文件预览】:
dbfOpinion
----javadbf-0[1].4.0.jar(13KB)
----JavaDBF Tutorial.htm(11KB)
----DBF_tool.java(20KB)