Hier ist ein einfaches Beispiel
Die Codekopie lautet wie folgt:
Paket com.cramc;
import Java.io.FileInputStream;
importieren java.io.filenotfoundException;
importieren java.io.fileoutputStream;
importieren java.io.inputstream;
importieren java.io.outputstream;
import com.linuxense.javadbf.dbfexception;
import com.linuxense.javadbf.dbffield;
import com.linuxense.javadbf.dbfreader;
import com.linuxense.javadbf.dbfwriter;
öffentliche Klasse RWDBF {
public static void readdbf (String Pfad)
{
InputStream fis = null;
versuchen
{
// Lesen Sie den Eingabestream der Datei
fis = new FileInputStream (Pfad);
// initialisieren
DBFfREADER reader = new dbffreader (fis);
// Rufen Sie DBFfReader an, um die Anzahl der Felder in der Pfaddatei an die Instanzmethode zu erhalten
int fieldsCount = reader.getFieldCount ();
System.out.println ("Anzahl der Felder:"+fieldsCount);
// Feldinformationen abrufen
für (int i = 0; i <fieldsCount; i ++)
{
Dbffield field = reader.getField (i);
System.out.println (field.getName ());
}
Objekt [] RowValues;
// Die Pfaddatei einzeln abrufen und aufzeichnen
while ((rowValues = reader.NexTrecord ())! = null)
{
für (int i = 0; i <rowValues.length; i ++)
{
System.out.println (RowValues [i]);
}
}
}
fangen (Ausnahme E)
{
E. printstacktrace ();
}
Endlich
{
versuchen{
fis.close ();
} catch (Ausnahme e) {}
}
}
Öffentliche statische Leere WititedBf (Saitenpfad)
{
OutputStream fos = null;
versuchen
{
// DBF -Dateifelder definieren
DBffield [] fields = new DBFField [3];
// Definieren Sie jede Feldinformationen getrennt, setFieldName und setName -Funktion gleich.
// Es ist nur so, dass SetFieldName nicht mehr empfohlen wird, um zu verwenden
Felder [0] = new dbffield ();
//fields ·0.Setfieldname("EMP_CODE ");
Fields [0] .SetName ("Semp_Code");
Fields [0] .setDatatype (dbffield.field_type_c);
Felder [0] .SetfieldLength (10);
Felder [1] = neuer dBffield ();
//fieldsuten.
Fields [1] .SetName ("emp_name");
Felder [1] .SetDatatype (dbffield.field_type_c);
Felder [1] .SetfieldLength (20);
Felder [2] = neuer dBffield ();
//fieldsuten.
Felder [2] .SetName ("Gehalt");
Felder [2] .SetDatatype (dbffield.field_type_n);
Felder [2] .SetfieldLength (12);
Felder [2] .SetDecimalCount (2);
// dbfwriter writer = new DBFWriter (neue Datei (Pfad));
// DBFWriter -Instanz definieren, um DBF -Dateien zu schreiben
DBFWriter writer = new dbfWriter ();
// Feldinformationen in die DBFWriter -Instanz schreiben, dh die Tabellenstruktur definieren
writer.setfields (fields);
// Rekorde schreiben
Objekt [] Rowdata = neues Objekt [3];
Rowdata [0] = "1000";
Rowdata [1] = "John";
Rowdata [2] = neues Double (5000,00);
writer.addrecord (rowdata);
Rowdata = neues Objekt [3];
Rowdata [0] = "1001";
Rowdata [1] = "Lalit";
Rowdata [2] = neues Double (3400,00);
writer.addrecord (rowdata);
Rowdata = neues Objekt [3];
Rowdata [0] = "1002";
Rowdata [1] = "Rohit";
Rowdata [2] = neues Double (7350.00);
writer.addrecord (rowdata);
// Definieren Sie den Ausgabestream und verknüpfen Sie eine Datei zusammen
fos = new FileOutputStream (Pfad);
// Daten schreiben
writer.write (fos);
//writer.write ();
} catch (Ausnahme E)
{
E. printstacktrace ();
}
Endlich
{
versuchen{
fos.close ();
} catch (Ausnahme e) {}
}
}
public static void main (String [] args) {
String path = "e: //tmp///xx.dbf";
versuchen {
InputStream fis = new FileInputStream (Pfad);
DBFfREADER reader = new dbffreader (fis);
int fieldsCount = reader.getFieldCount ();
System.out.println ("Anzahl der Felder:"+fieldsCount);
Dbffield [] df = new dbffield [fieldsCount+2];
für (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);
Objekt [] RowValues;
Object [] rowValues1 = neues Objekt [FieldsCount+2];
// Die Pfaddatei einzeln abrufen und aufzeichnen
while ((rowValues = reader.NexTrecord ())! = null)
{
für (int i = 0; i <fieldsCount; i ++) {
rowValues1 [i] = rowValues [i];
}
rowValues1 [fieldsCount] = "x";
rowValues1 [fieldsCount+1] = "xx";
writer.addrecord (rowValues1);
}
path = "e: //tmp//1//test2.dbf";
OutputStream fos = new FileOutputStream (Pfad);
// Daten schreiben
writer.write (fos);
System.out.println ("Over");
} catch (FilenotFoundException | dbFexception e) {
// todo automatisch generierter Fangblock
E. printstacktrace ();
}
}
}