다음은 간단한 예입니다
코드 사본은 다음과 같습니다.
패키지 com.cramc;
import java.io.fileInputStream;
import java.io.filenotfoundException;
import java.io.fileoutputStream;
import java.io.inputstream;
import java.io.outputStream;
com.linuxense.javadbf.dbfexception 가져 오기;
com.linuxense.javadbf.dbffield 가져 오기;
import com.linuxense.javadbf.dbfreader;
com.linuxense.javadbf.dbfwriter 가져 오기;
공개 클래스 rwdbf {
공개 정적 void readdbf (문자열 경로)
{
inputStream fis = null;
노력하다
{
// 파일의 입력 스트림을 읽습니다
fis = 새로운 fileInputStream (Path);
// 입력 스트림에 따라 DBFREADER 인스턴스 초기화 DBF 파일 정보를 읽으십시오.
dbfreader reader = new dbfreader (FIS);
// DBFREADER에 전화하여 인스턴스 메소드로 경로 파일의 필드 수를 얻습니다.
int fieldScount = reader.getFieldCount ();
System.out.println ( "필드 수 :"+FieldScount);
// 필드 정보를 가져옵니다
for (int i = 0; i <fieldscount; i ++)
{
dbffield 필드 = reader.getfield (i);
System.out.println (field.getName ());
}
객체 [] rowvalues;
// 경로 파일을 하나씩 가져 와서 레코드하십시오
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) {}
}
}
공개 정적 void writedbf (문자열 경로)
{
outputStream fos = null;
노력하다
{
// DBF 파일 필드를 정의합니다
dbffield [] fields = New DBffield [3];
// 각 필드 정보를 개별적으로 정의하고 SetfieldName 및 SetName 함수를 동일하게 정의합니다.
// SetfieldName이 더 이상 사용하는 것이 권장되지 않는 것입니다.
필드 [0] = New DBffield ();
//fields]] .setfieldName("Emp_code ");
필드 [0] .setName ( "semp_code");
필드 [0] .SetDatatype (dbffield.field_type_c);
필드 [0] .SetFieldLength (10);
필드 [1] = New DBffield ();
//fields]] .setfieldName("Emp_name ");
필드 [1] .setName ( "emp_name");
필드 [1] .SetDatatype (dbffield.field_type_c);
필드 [1] .SetFieldLength (20);
필드 [2] = New DBffield ();
//fields]. setfieldName("salary ");
필드 [2] .SETNAME ( "급여");
필드 [2] .SetDatatype (dbffield.field_type_n);
필드 [2] .SetFieldLength (12);
필드 [2] .SetDecimalCount (2);
// dbfwriter writer = new dbfwriter (새 파일 (path));
// dbfwriter 인스턴스를 정의하여 dbf 파일을 작성합니다
dbfwriter Writer = new dbfwriter ();
// 필드 정보 쓰기 DBFWRITER 인스턴스, 즉 테이블 구조 정의
Writer.setfields (필드);
// 레코드 작성
Object [] rowdata = 새 개체 [3];
RowData [0] = "1000";
RowData [1] = "John";
RowData [2] = New Double (5000.00);
Writer.addrecord (RowData);
RowData = 새로운 객체 [3];
RowData [0] = "1001";
RowData [1] = "lalit";
RowData [2] = New Double (3400.00);
Writer.addrecord (RowData);
RowData = 새로운 객체 [3];
RowData [0] = "1002";
RowData [1] = "Rohit";
RowData [2] = New Double (7350.00);
Writer.addrecord (RowData);
// 출력 스트림을 정의하고 파일을 연결합니다
fos = 새 파일 아웃 putStream (path);
// 데이터 작성
Writer.Write (FOS);
//writer.write ();
} catch (예외 E)
{
e.printstacktrace ();
}
마지막으로
{
노력하다{
fos.close ();
} catch (예외 E) {}
}
}
public static void main (String [] args) {
문자열 path = "e : //tmp//2//xx.dbf";
노력하다 {
inputStream fis = 새로운 fileInputStream (Path);
dbfreader reader = new dbfreader (FIS);
int fieldScount = reader.getFieldCount ();
System.out.println ( "필드 수 :"+FieldScount);
dbffield [] df = 새로운 dbffield [fieldscount+2];
for (int i = 0; i <fieldscount; i ++)
{
df [i] = reader.getfield (i);
System.out.println ( "필드"+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);
객체 [] rowvalues;
Object [] rowValues1 = 새 개체 [FieldScount+2];
// 경로 파일을 하나씩 가져 와서 레코드하십시오
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);
}
경로 = "e : //tmp//2//test2.dbf";
outputStream fos = 새 파일 아웃 PutStream (Path);
// 데이터 작성
Writer.Write (FOS);
System.out.println ( "Over");
} catch (filenotfoundException | dbfexception e) {
// TODO 자동 생성 캐치 블록
e.printstacktrace ();
}
}
}