JavaDBF 是让Java可以方便的操作DBF文件的一jar 包,在 http://sarovar.org/projects/javadbf/ 可以下载到。
下载根据文档可以很快上手的操作DBF文件。下面附两段代码:
读取DBF文件:这个是指南中的例子。
import
java.io.
*
;
import
com.linuxense.javadbf.
*
;

public
class
JavaDBFReaderTest
{

public static void main( String args[]) {

try {

// create a DBFReader object
//
InputStream inputStream = new FileInputStream( args[ 0]); // take dbf file as program argument
DBFReader reader = new DBFReader( inputStream);

// get the field count if you want for some reasons like the following
//
int numberOfFields = reader.getFieldCount();

// use this count to fetch all field information
// if required
//
for( int i=0; i<numberOfFields; i++) {

DBFField field = reader.getField( i);

// do something with it if you want
// refer the JavaDoc API reference for more details
//
System.out.println( field.getName());
}

// Now, lets us start reading the rows
//
Object []rowObjects;

while( (rowObjects = reader.nextRecord()) != null) {

for( int i=0; i<rowObjects.length; i++) {

System.out.println( rowObjects[i]);
}
}

// By now, we have itereated through all of the rows
inputStream.close();
}
catch( DBFException e) {

System.out.println( e.getMessage());
}
catch( IOException e) {

System.out.println( e.getMessage());
}
}
}

这个例子读取中文会是乱码:
加入下面一行代码就可以了:
reader.setCharactersetName("gb2312");
写入DBF文件代码:也是指南中的例子
import
com.linuxense.javadbf.
*
;
import
java.io.
*
;

public
class
DBFWriterTest
{

public static void main( String args[])
throws DBFException, IOException {

// let us create field definitions first
// we will go for 3 fields
//
DBFField fields[] = new DBFField[ 3];

fields[0] = new DBFField();
fields[0].setName( "emp_code");
fields[0].setDataType( DBFField.FIELD_TYPE_C);
fields[0].setFieldLength( 10);

fields[1] = new DBFField();
fields[1].setField( "emp_name");
fields[1].setDataType( DBFField.FIELD_TYPE_C);
fields[1].setFieldLength( 20);

fields[2] = new DBFField();
fields[2].setField( "salary");
fields[2].setDataType( DBFField.FIELD_TYPE_N);
fields[2].setFieldLength( 12);
fields[2].setDecimalCount( 2);

DBFWriter writer = new DBFWriter();
writer.setFields( fields);

// now populate DBFWriter
//

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);

FileOutputStream fos = new FileOutputStream( args[0]);
writer.write( fos);
fos.close();
}
}

同样想写入中文也要加入上面那一行代码。
接着问题就出现了:
在写入中文的时候当中文超过4个汉字的时候就能完全插入。
例如:想在某字段手插入“一二三四五”,当保存后结果却是“一二三四?"后面的字不见了!
由于这个问题,只好放弃用JavaDBF操作DBF文件了。改用SQL Server的存储过程了。虽然不能跨平台了,但在找到其他解决方法之前,就先用了。
如果那位有用过并知道答案的可以交流一下。wfn_libo@163.com
下载根据文档可以很快上手的操作DBF文件。下面附两段代码:
读取DBF文件:这个是指南中的例子。



























































加入下面一行代码就可以了:
reader.setCharactersetName("gb2312");
写入DBF文件代码:也是指南中的例子































































同样想写入中文也要加入上面那一行代码。
接着问题就出现了:
在写入中文的时候当中文超过4个汉字的时候就能完全插入。
例如:想在某字段手插入“一二三四五”,当保存后结果却是“一二三四?"后面的字不见了!
由于这个问题,只好放弃用JavaDBF操作DBF文件了。改用SQL Server的存储过程了。虽然不能跨平台了,但在找到其他解决方法之前,就先用了。
如果那位有用过并知道答案的可以交流一下。wfn_libo@163.com