Aquí hay un ejemplo simple
La copia del código es la siguiente:
paquete 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;
clase pública rwdbf {
Public static void readDBF (ruta de cadena)
{
InputStream Fis = NULL;
intentar
{
// Lea la transmisión de entrada del archivo
fis = nuevo fileInputStream (ruta);
// Inicializar una instancia de DBFreader de acuerdo con el flujo de entrada para leer la información del archivo DBF
Dbfreader lector = new DBFReader (FIS);
// llame a DBFeader para obtener el número de campos en el archivo de ruta al método de instancia
int FieldsCount = Reader.getFieldCount ();
System.out.println ("Número de campos:"+FieldsCount);
// buscar información de campo
para (int i = 0; i <FieldsCount; i ++)
{
Dbffield campo = lector.getfield (i);
System.out.println (field.getName ());
}
Objeto [] RowValues;
// Obtener el archivo de ruta uno por uno y grabar
while ((rowValues = Reader.nextrecord ())! = NULL)
{
para (int i = 0; i <rowValues.length; i ++)
{
System.out.println (RowValues [i]);
}
}
}
captura (excepción e)
{
E.PrintStackTrace ();
}
Finalmente
{
intentar{
fis.close ();
} capt (excepción e) {}
}
}
Public static void WritedBF (ruta de cadena)
{
OutputStream fos = null;
intentar
{
// Defina los campos de archivos DBF
Dbffield [] campos = new dbffield [3];
// Definir cada información de campo por separado, setFieldName y setname función igual.
// es solo que SetFieldName ya no se recomienda usar
campos [0] = new dbffield ();
//fields§0font>.setFieldName("emp_code ");
campos [0] .setName ("semp_code");
campos [0] .SetDatatype (dbffield.field_type_c);
campos [0] .setFieldLength (10);
campos [1] = new dbffield ();
//fields§font>.setfieldname("emp_name ");
campos [1] .setName ("emp_name");
campos [1] .setDatatype (dbffield.field_type_c);
campos [1] .setFieldLength (20);
campos [2] = new dbffield ();
//fields§font>.setfieldName("SALARY ");
campos [2] .setName ("salario");
campos [2] .setDatatype (dbffield.field_type_n);
campos [2] .setFieldLength (12);
campos [2] .setDecimalCount (2);
// DBFWriter Writer = new DBFWriter (nuevo archivo (ruta));
// Definir la instancia de DBFWriter para escribir archivos DBF
DBFWriter Writer = new DBFWriter ();
// Escribir información de campo en la instancia de DBFWriter, es decir, defina la estructura de la tabla
Writer.SetFields (campos);
// escribir registros
Objeto [] rowdata = nuevo objeto [3];
RowData [0] = "1000";
RowData [1] = "John";
RowData [2] = new Double (5000.00);
Writer.Addrecord (RowData);
RowData = nuevo objeto [3];
RowData [0] = "1001";
RowData [1] = "Lalit";
RowData [2] = new Double (3400.00);
Writer.Addrecord (RowData);
RowData = nuevo objeto [3];
RowData [0] = "1002";
RowData [1] = "rohit";
RowData [2] = new Double (7350.00);
Writer.Addrecord (RowData);
// Definir la secuencia de salida y asociar un archivo
fos = nuevo FileOutputStream (ruta);
// Escribir datos
escritor.write (FOS);
//writer.write ();
} Catch (Excepción e)
{
E.PrintStackTrace ();
}
Finalmente
{
intentar{
fos.close ();
} capt (excepción e) {}
}
}
public static void main (string [] args) {
String ruta = "e: //tmp//2//xx.dbf";
intentar {
InputStream FIS = new FileInputStream (ruta);
Dbfreader lector = new DBFReader (FIS);
int FieldsCount = Reader.getFieldCount ();
System.out.println ("Número de campos:"+FieldsCount);
Dbffield [] df = nuevo dbffield [FieldsCount+2];
para (int i = 0; i <FieldsCount; i ++)
{
df [i] = lector.getfield (i);
System.out.println ("campo"+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);
Objeto [] RowValues;
Objeto [] rowValues1 = nuevo objeto [FieldsCount+2];
// Obtener el archivo de ruta uno por uno y grabar
while ((rowValues = Reader.nextrecord ())! = NULL)
{
para (int i = 0; i <FieldsCount; i ++) {
RowValues1 [i] = RowValues [i];
}
RowValues1 [FieldsCount] = "x";
RowValues1 [FieldsCount+1] = "xx";
Writer.Addrecord (RowValues1);
}
ruta = "e: //tmp//2//test2.dbf";
OutputStream fos = new FileOutputStream (ruta);
// Escribir datos
escritor.write (FOS);
System.out.println ("Over");
} Catch (FileNotFoundException | DBFException e) {
// bloque de captura generado automático
E.PrintStackTrace ();
}
}
}