public static void readDBF(String path)
{
InputStream fis = null
try
{
//读取文件的输入流
fis = new FileInputStream(path)
//根据输入流初始化一个DBFReader实例,用来读取DBF文件信息
DBFReader reader = new DBFReader(fis)
//调用DBFReader对实例方法得到path文件中字段的个数
int fieldsCount = reader.getFieldCount()
System.out.println("字段数:"+fieldsCount)
//取出字段信息
for( int i=0 i<fieldsCount i++)
{
DBFField field = reader.getField(i)
System.out.println(field.getName())
}
Object[] rowValues
//一条条取出path文件中记录
while((rowValues = reader.nextRecord()) != null)
{
for( int i=0 i<rowValues.length i++)
{
System.out.println(rowValues[i])
}
}
}
catch(Exception e)
{
e.printStackTrace()
}
finally
{
try{
fis.close()
}catch(Exception e){}
}
}
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){}
}
}
public static void main(String[] args){
String path ="E:\\tmp\\2\\xx.dbf"
try {
InputStream fis = new FileInputStream(path)
DBFReader reader = new DBFReader(fis)
int fieldsCount = reader.getFieldCount()
System.out.println("字段数:"+fieldsCount)
DBFField[] df = new DBFField[fieldsCount+2]
for( int i=0 i<fieldsCount i++)
{
df[i] = reader.getField(i)
System.out.println("field"+i+":"+df[i].getName())
}
df[fieldsCount] = new DBFField()
df[fieldsCount].setName("add1")
df[fieldsCount].setDataType(DBFField.FIELD_TYPE_C)
df[fieldsCount].setFieldLength(10)
df[fieldsCount+1] = new DBFField()
df[fieldsCount+1].setName("add2")
df[fieldsCount+1].setDataType(DBFField.FIELD_TYPE_C)
df[fieldsCount+1].setFieldLength(10)
DBFWriter writer = new DBFWriter()
writer.setFields(df)
Object[] rowValues
Object[] rowValues1 = new Object[fieldsCount+2]
//一条条取出path文件中记录
while((rowValues = reader.nextRecord()) != null)
{
for(int i=0i<fieldsCounti++){
rowValues1[i] = rowValues[i]
}
rowValues1[fieldsCount]="x"
rowValues1[fieldsCount+1]="xx"
writer.addRecord(rowValues1)
}
path ="E:\\tmp\\2\\test2.dbf"
OutputStream fos = new FileOutputStream(path)
//写入数据
writer.write(fos)
System.out.println("OVER")
} catch (FileNotFoundException | DBFException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
}
详细出处参考:http://www.jb51.net/article/46344.htm
Java读取DBF文件,需要加载开源jar包JavaDBF.jar,然后使用里面的方法进行读写,示例如下:
package searchpublic 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 = 0b<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 = 0dbfreader.hasNextRecord()i++)
{
String[] aobj = dbfreader.nextRecordString()
for(int b = 0b<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())
}
}
}
对于dbf是什么文件,我想一些朋友都不太注意,因为接触的很少,除非是一些整天编程的朋友,或者是一些专 门 研究相关文件的朋友才会有所关注。简单地讲DBF就是一个格式,这个格式是存储数据用的,因此dbf文件也叫做数据库格式文件。一、 dbf格式的来源
到底哪些软件会应用到这样的格式呢?像Foxbase,Dbase,Visual FoxPro等这些数据库的处理系统都会需要这种格式的文件。也可以这么说,DBF格式的数据库类型是我们经常会用到的一种桌面型的数据库模式。它是一种结构化的标准格式,主要适用于数据存取的功能,在商业里面应用的比较多一些。
dbf是什么文件?它对于各个企业的关系是怎样的呢?其实这种格式文件是数据交换工具,被广泛的在各企业以及各个事业单位里面使用。
二、dbf文件的读取
那么我们如何读取这样的文件呢?DBFViewerPlus1.67,DBF表查看器,这个软件可以很好的很方便的查看以及编辑相关的DBF文件。这个软件能够轻而易举的搜索以及筛选数据库里面的字段值。此外除了这一款软件之外,还有DataBaseBrowser数据库浏览器。这个软件也是可以查询数据库资料的一种工具类的软件。它既可以让我们看到数据库的结构,也可以让我们查看到相关的数据。此外一些数据库信息,表索引也可以查看得到。
打开这类dbf文件我们也可以用excel打开,ACCESS也能够打开这类数据库文件。