Aqui está um exemplo simples
A cópia do código é a seguinte:
pacote com.cramc;
importar java.io.fileInputStream;
importar java.io.filenotfoundException;
importar java.io.fileOutputStream;
importar java.io.inputStream;
importar java.io.OutputStream;
importação com.linuxense.javadbf.dbFexception;
import com.linuxense.javadbf.dbffield;
import com.linuxense.javadbf.dbfreader;
import com.linuxense.javadbf.dbfwriter;
classe pública rwdbf {
public static void readdbf (caminho da string)
{
InputStream fis = null;
tentar
{
// Leia o fluxo de entrada do arquivo
fis = new FileInputStream (caminho);
// Inicialize uma instância do dbfreader de acordo com o fluxo de entrada para ler informações do arquivo dbf
Leitor dbfreader = novo dbfreader (fis);
// Ligue para o DBFreader para obter o número de campos no arquivo de caminho para o método da instância
int fieldsCount = reader.getFieldCount ();
System.out.println ("Número de campos:"+fieldsCount);
// buscar informações de campo
for (int i = 0; i <fieldscount; i ++)
{
Dbffield field = leitor.getfield (i);
System.out.println (field.getName ());
}
Objeto [] rowValues;
// busca o arquivo de caminho um por um e gravar
while ((rowvalues = reader.nextrecord ())! = null)
{
for (int i = 0; i <rowvalues.length; i ++)
{
System.out.println (rowvalues [i]);
}
}
}
Catch (Exceção e)
{
E.PrintStackTrace ();
}
Finalmente
{
tentar{
fis.close ();
} catch (Exceção e) {}
}
}
public static void writedbf (caminho da string)
{
OutputStream fos = null;
tentar
{
// define campos de arquivo dbf
Dbffield [] campos = novo dbffield [3];
// Defina as informações de cada campo separadamente, o SetFieldName e o SetName funcionem o mesmo.
// é apenas que o SetfieldName não é mais recomendado para usar
campos [0] = new dbffield ();
//fields....
campos [0] .setName ("semp_code");
campos [0] .SetDatatype (dbffield.field_type_c);
campos [0] .SetFieldLength (10);
campos [1] = new dbffield ();
//fieldsOr.
campos [1] .setName ("EMP_NAME");
campos [1] .SetDatatype (dbffield.field_type_c);
campos [1] .SetFieldLength (20);
campos [2] = new dbffield ();
//fieldsbol ].setFieldName("salary ");
campos [2] .setName ("Salário");
campos [2] .SetDatatype (dbffield.field_type_n);
campos [2] .SetFieldLength (12);
campos [2] .setDecimalCount (2);
// dbfwriter writer = new dbfwriter (novo arquivo (caminho));
// define a instância do dbfwriter para escrever arquivos DBF
Dbfwriter writer = new dbfwriter ();
// Escreva informações de campo na instância do dbfwriter, ou seja, defina a estrutura da tabela
writer.setFields (campos);
// grava registros
Objeto [] RowData = novo objeto [3];
rowdata [0] = "1000";
Rowdata [1] = "John";
rowdata [2] = novo duplo (5000,00);
writer.addrecord (RowData);
RowData = novo objeto [3];
rowdata [0] = "1001";
rowdata [1] = "lalit";
rowdata [2] = novo duplo (3400,00);
writer.addrecord (RowData);
RowData = novo objeto [3];
rowdata [0] = "1002";
rowdata [1] = "rohit";
rowdata [2] = novo duplo (7350,00);
writer.addrecord (RowData);
// Defina o fluxo de saída e associe um arquivo
fos = new FileOutputStream (caminho);
// grava dados
writer.write (fos);
//writer.write ();
} captura (Exceção e)
{
E.PrintStackTrace ();
}
Finalmente
{
tentar{
fos.close ();
} catch (Exceção e) {}
}
}
public static void main (string [] args) {
String path = "e: //tmp//2//xx.dbf";
tentar {
InputStream fis = new FileInputStream (caminho);
Leitor dbfreader = novo dbfreader (fis);
int fieldsCount = reader.getFieldCount ();
System.out.println ("Número de campos:"+fieldsCount);
Dbffield [] df = novo dbffield [fieldscount+2];
for (int i = 0; i <fieldscount; i ++)
{
df [i] = leitor.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 = novo objeto [FIELDSCOUNT+2];
// busca o arquivo de caminho um por um e gravar
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 (caminho);
// grava dados
writer.write (fos);
System.out.println ("over");
} catch (filenotfoundException | dbFexception e) {
// TODO BLOCO DE CAPAGEM AUTOMAGEM
E.PrintStackTrace ();
}
}
}