急急急。。。。java生成dbf文件

wx0326 2008-10-24 10:53:38
java用那个jar包生成dbf文件方便好使呀!
...全文
251 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
具体的楼主要是不明白,去下面的链接看看
http://www.javaeye.com/topic/106065
  • 打赏
  • 举报
回复

public static void generateDbfFromArray(

String dbfName,

String[] strutName,

byte[] strutType,

int[] strutLength,

Object[][] data

)

{

OutputStream fos = null;

try

{

int fieldCount = strutName.length;

DBFField[] fields = new DBFField[fieldCount];

for(int i=0;i<fieldCount;i++)

{

fields[i] = new DBFField();

fields[i].setName(strutName[i]);

fields[i].setDataType(strutType[i]);

fields[i].setFieldLength(strutLength[i]);

}

DBFWriter writer = new DBFWriter();

writer.setFields(fields);

for(int i=0;i<fieldCount;i++)

{

writer.addRecord(data[i]);

}

fos = new FileOutputStream(dbfName);

writer.write(fos);

}

catch(Exception e)

{

e.printStackTrace();

}

finally

{

try{

fos.close();

}catch(Exception e){}

}

}
  • 打赏
  • 举报
回复
注意:writer.addRecord(rowData)时并不真正写入数据,在最后writer.write(fos)时才会把数据写入DBF文件,之前addRecord的数据暂时存放在内存中。如果数据量过大,这种方式显然不适合,内存中存储的数据过多,所以JavaDBF提供了另外一种机制来解决这个问题:Sync Mode(同步模式)。使用方法如下:

用new DBFWriter(new File(path))实例化DBFWriter类,最后写入数据时用writer.write(),这样在每次addRecord时数据就被写入的DBF文件中。

因为初始化DBFWriter时传递了DBF文件,所以不用再定义DBF表结构,如果你定义并加载表结构会报异常。



下面这个函数会根据你传入的数据信息自动生成DBF文件,这样以后我们只要构造好数组,就可以直接得到DBF文件,不用每次都去写重复的代码。

  • 打赏
  • 举报
回复
用JavaDBF操作(读、写)DBF文件

最近的一个项目需要动态生成DBF文件,用到JavaDBF,简单介绍一下

官方网站:http://javadbf.sarovar.org/

官方英文指南:http://sarovar.org/docman/view.php/32/23/javadbf-tutorial.html

最新版本:0.4.0,最后发布时间还是在2004年4月1日,看来DBF真是老了。老归老,有些时候还是得用。

下面是分别是读取和写DBF文件以及其他操作函数(关键信息的解释我放在了注释里,这样看起来会更方便):

写DBF文件:



java 代码

public static void writeDBF(String path)



OutputStream fos = null;

try

{

//定义DBF文件字段

DBFField[] fields = new DBFField[3];

//分别定义各个字段信息,setFieldName和setName作用相同,

//只是setFieldName已经不建议使用

fields[0] = new DBFField();

//fields[0].setFieldName("emp_code");

fields[0].setName("semp_code");

fields[0].setDataType(DBFField.FIELD_TYPE_C);

fields[0].setFieldLength(10);



fields[1] = new DBFField();

//fields[1].setFieldName("emp_name");

fields[1].setName("emp_name");

fields[1].setDataType(DBFField.FIELD_TYPE_C);

fields[1].setFieldLength(20);



fields[2] = new DBFField();

//fields[2].setFieldName("salary");

fields[2].setName("salary");

fields[2].setDataType(DBFField.FIELD_TYPE_N);

fields[2].setFieldLength(12);

fields[2].setDecimalCount(2);



//DBFWriter writer = new DBFWriter(new File(path));

//定义DBFWriter实例用来写DBF文件

DBFWriter writer = new DBFWriter();

//把字段信息写入DBFWriter实例,即定义表结构

writer.setFields(fields);

//一条条的写入记录

Object[] rowData = new Object[3];

rowData[0] = "1000";

rowData[1] = "John";

rowData[2] = new Double(5000.00);

writer.addRecord(rowData);

rowData = new Object[3];

rowData[0] = "1001";

rowData[1] = "Lalit";

rowData[2] = new Double(3400.00);

writer.addRecord(rowData);

rowData = new Object[3];

rowData[0] = "1002";

rowData[1] = "Rohit";

rowData[2] = new Double(7350.00);

writer.addRecord(rowData);

//定义输出流,并关联的一个文件

fos = new FileOutputStream(path);

//写入数据

writer.write(fos);

//writer.write();

}catch(Exception e)

{

e.printStackTrace();

}

finally

{

try{

fos.close();

}catch(Exception e){}

}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧