java解析dbf之通過(guò)javadbf包生成和讀取dbf文件
以下是簡(jiǎn)單示例
package com.cramc;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import com.linuxense.javadbf.DBFException;
import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFReader;
import com.linuxense.javadbf.DBFWriter;
public class Rwdbf {
public static void readDBF(String path)
{
InputStream fis = null;
try
{
//讀取文件的輸入流
fis = new FileInputStream(path);
//根據(jù)輸入流初始化一個(gè)DBFReader實(shí)例,用來(lái)讀取DBF文件信息
DBFReader reader = new DBFReader(fis);
//調(diào)用DBFReader對(duì)實(shí)例方法得到path文件中字段的個(gè)數(shù)
int fieldsCount = reader.getFieldCount();
System.out.println("字段數(shù):"+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];
//分別定義各個(gè)字段信息,setFieldName和setName作用相同,
//只是setFieldName已經(jīng)不建議使用
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實(shí)例用來(lái)寫(xiě)DBF文件
DBFWriter writer = new DBFWriter();
//把字段信息寫(xiě)入DBFWriter實(shí)例,即定義表結(jié)構(gòu)
writer.setFields(fields);
//一條條的寫(xiě)入記錄
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);
//定義輸出流,并關(guān)聯(lián)的一個(gè)文件
fos = new FileOutputStream(path);
//寫(xiě)入數(shù)據(jù)
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("字段數(shù):"+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=0;i<fieldsCount;i++){
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);
//寫(xiě)入數(shù)據(jù)
writer.write(fos);
System.out.println("OVER");
} catch (FileNotFoundException | DBFException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- java文件對(duì)話框過(guò)濾特定文件類型示例
- java讀取文件字符集示例方法
- java復(fù)制文件和java移動(dòng)文件的示例分享
- java按指定編碼寫(xiě)入和讀取文件內(nèi)容的類分享
- java自動(dòng)根據(jù)文件內(nèi)容的編碼來(lái)讀取避免亂碼
- java寫(xiě)入文件的幾種方法分享
- java清除u盤(pán)內(nèi)存卡里的垃圾文件示例
- java讀取excel文件并復(fù)制(copy)文件到指定目錄示例
- Java生成和解析XML格式文件和字符串的實(shí)例代碼
- java使用ftp上傳文件示例分享
- java操作ftp下載文件示例
- Javascript寫(xiě)入txt和讀取txt文件示例
- java文件操作工具類分享(file文件工具類)
- java讀取文件顯示進(jìn)度條的實(shí)現(xiàn)方法
- java制作復(fù)制文件工具代碼分享
- java生成csv文件亂碼的解決方法示例 java導(dǎo)出csv亂碼
- java數(shù)字圖像處理基礎(chǔ)使用imageio寫(xiě)圖像文件示例
- java刪除文件夾下所有文件示例分享
相關(guān)文章
JavaWeb開(kāi)發(fā)入門(mén)第一篇必備知識(shí)講解
JavaWeb開(kāi)發(fā)入門(mén)第一篇主要內(nèi)容介紹的是必備知識(shí)、基礎(chǔ)知識(shí)、搭建JavaWeb應(yīng)用開(kāi)發(fā)環(huán)境,感興趣的小伙伴們可以參考一下2016-04-04java基于JDBC連接Oracle 11g Release2實(shí)例分析
這篇文章主要介紹了java基于JDBC連接Oracle 11g Release2的方法,實(shí)例分析了JDBC連接Oracle 11g Release2容易出現(xiàn)的異常與解決方法,需要的朋友可以參考下2015-06-06解決java.util.zip.ZipException: Not in GZIP&nbs
這篇文章主要介紹了解決java.util.zip.ZipException: Not in GZIP format報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12SpringAOP如何修改請(qǐng)求參數(shù)列表
這篇文章主要介紹了SpringAOP如何修改請(qǐng)求參數(shù)列表問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Java?中?Class?Path?和?Package的使用詳解
這篇文章主要介紹了Java?中?Class?Path和Package的使用詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08Elasticsearch 基礎(chǔ)介紹及索引原理分析
這篇文章主要介紹了Elasticsearch 基礎(chǔ)介紹及索引原理分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Spring 定時(shí)任務(wù)@Scheduled 注解中的 Cron 表達(dá)式詳解
Cron 表達(dá)式是一種用于定義定時(shí)任務(wù)觸發(fā)時(shí)間的字符串表示形式,它由七個(gè)字段組成,分別表示秒、分鐘、小時(shí)、日期、月份、星期和年份,這篇文章主要介紹了Spring 定時(shí)任務(wù)@Scheduled 注解中的 Cron 表達(dá)式,需要的朋友可以參考下2023-07-07SpringBoot整合mybatis結(jié)合pageHelper插件實(shí)現(xiàn)分頁(yè)
在本篇文章里小編給大家整理的是關(guān)于SpringBoot整合mybatis使用pageHelper插件進(jìn)行分頁(yè)操作相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2020-02-02