これが簡単な例です
コードコピーは次のとおりです。
パッケージcom.cramc;
java.io.fileinputStreamをインポートします。
java.io.filenotfoundexceptionをインポートします。
java.io.fileoutputStreamをインポートします。
java.io.inputStreamをインポートします。
java.io.outputStreamをインポートします。
com.linuxense.javadbf.dbfexceptionをインポートします。
com.linuxense.javadbf.dbffieldをインポートします。
com.linuxense.javadbf.dbfreaderをインポートします。
com.linuxense.javadbf.dbfwriterをインポートします。
パブリッククラスrwdbf {
public static void readdbf(string path)
{
inputstream fis = null;
試す
{
//ファイルの入力ストリームを読み取ります
fis = new fileInputStream(path);
//入力ストリームに従ってDBFReaderインスタンスを初期化してDBFファイル情報を読み取る
dbfreader reader = new dbfreader(fis);
// dbfreaderに電話して、パスファイル内のフィールドの数をインスタンスメソッドに取得します
int fieldscount = reader.getFieldCount();
System.out.println( "フィールド数:"+フィールドスケート);
//フィールド情報を取得します
for(int i = 0; i <fieldscount; i ++)
{
dbffield field = reader.getfield(i);
System.out.println(field.getName());
}
object [] rowvalues;
//パスファイルを1つずつ取得して録音します
while((rowvalues = reader.nextrecord())!= null)
{
for(int i = 0; i <rowvalues.length; i ++)
{
system.out.println(rowvalues [i]);
}
}
}
キャッチ(例外e)
{
e.printstacktrace();
}
ついに
{
試す{
fis.close();
} catch(例外e){}
}
}
public static void writedbf(文字列パス)
{
outputStream fos = null;
試す
{
// 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);
フィールド[0] .setfieldLength(10);
fields [1] = new dbffield();
//fields [1] .setfieldname("emp_name ");
fields [1] .setname( "emp_name");
fields [1] .setDatatype(dbffield.field_type_c);
フィールド[1] .setFieldLength(20);
fields [2] = new dbffield();
//fields [2] .setfieldname("salary ");
フィールド[2] .setName( "給与");
fields [2] .setDatatype(dbffield.field_type_n);
フィールド[2] .setFieldLength(12);
フィールド[2] .setDecimalCount(2);
// dbfwriter writer = new dbfwriter(new file(path));
// dbfwriterインスタンスを定義して、dbfファイルを書き込みます
dbfwriter writer = new dbfwriter();
// dbfwriterインスタンスにフィールド情報を書き込む、つまり、テーブル構造を定義します
writer.setfields(フィールド);
//レコードを書きます
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(例外e)
{
e.printstacktrace();
}
ついに
{
試す{
fos.close();
} catch(例外e){}
}
}
public static void main(string [] args){
string path = "e://tmp//2//xx.dbf";
試す {
inputstream fis = new fileinputStream(path);
dbfreader reader = new dbfreader(fis);
int fieldscount = reader.getFieldCount();
System.out.println( "フィールド数:"+フィールドスケート);
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];
//パスファイルを1つずつ取得して録音します
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);
//データを書き込みます
writer.write(fos);
system.out.println( "over");
} catch(filenotfoundexception | dbfexception e){
// TODO自動生成キャッチブロック
e.printstacktrace();
}
}
}