e6621887 2009-06-03 22:27
浏览 419
已采纳

java写入dbf出现的问题

我使用文档中的测试用例写入dbf文件:
package expdbf;

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].setName( "emp_name");
fields[1].setDataType( DBFField.FIELD_TYPE_C);
fields[1].setFieldLength(20);

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

DBFWriter writer = new DBFWriter();
writer.setCharactersetName("GBK");
writer.setFields( fields);

// now populate DBFWriter
//

Object rowData[] = new Object[3];
rowData[0] = "1000";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 5000.00);

writer.addRecord( rowData);

rowData = new Object[3];
rowData[0] = "1001";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 3400.00);

writer.addRecord( rowData);

rowData = new Object[3];
rowData[0] = "1002";
rowData[1] = "一二三四五六";
rowData[2] = new Double( 7350.00);

writer.addRecord( rowData);

FileOutputStream fos = new FileOutputStream("E:\\testdbf.dbf");
writer.write( fos);
fos.close();

}
}
开始时运行查看dbf文件,里面的中文都是乱码。后来加入了writer.setCharactersetName("GBK")后中文倒是正常显示了,但是文字都被截断了。"一二三四五六"在dbf文件中都只写入了"一二三"。

  • 写回答

1条回答 默认 最新

  • lggegegmail 2009-06-04 09:57
    关注

    我用你的代码测试后, 完全正常, 文字没有截断.
    是否你的javaDbf版本问题, 尝试下个新的版本.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办