Вот простой пример
Кода -копия выглядит следующим образом:
пакет 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, чтобы получить количество полей в файле PATH в метод экземпляра
int fieldscount = reader.getFieldCount ();
System.out.println ("Количество полей:"+fieldscount);
// получение информации поля
для (int i = 0; i <fieldscount; i ++)
{
Dbffield field = reader.getfield (i);
System.out.println (field.getName ());
}
Object [] rowValues;
// Извлекать файл пути один за другим и записать
while ((rowvalues = reader.nextrecord ())! = null)
{
для (int i = 0; i <rowvalues.length; i ++)
{
System.out.println (Rowvalues [i]);
}
}
}
Поймать (исключение E)
{
e.printstacktrace ();
}
Окончательно
{
пытаться{
fis.close ();
} catch (Exception e) {}
}
}
Public Static void writedbf (String Path)
{
OutputStream fos = null;
пытаться
{
// определить поля файлов DBF
Dbffield [] fields = new dbffield [3];
// Определите каждую информацию поля отдельно, SetFieldName и функция SetName одинаково.
// просто то, что SetFieldName больше не рекомендуется использовать
Fields [0] = new dbffield ();
//fields!
Fields [0] .SetName ("semp_code");
Fields [0] .SetDatatype (dbffield.field_type_c);
Fields [0] .SetFieldLength (10);
поля [1] = новый dbffield ();
//fields®.setfieldname("emp_name ");
Fields [1] .SetName ("EMP_NAME");
Fields [1] .SetDatatype (dbffield.field_type_c);
поля [1] .setfieldLength (20);
поля [2] = новый dbffield ();
//fields=2^.setfieldname("salary ");
поля [2] .SetName («зарплата»);
Fields [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] = "Джон";
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 = new FileOutputStream (path);
// Написать данные
writer.write (fos);
//writer.write ();
} Catch (Exception E)
{
e.printstacktrace ();
}
Окончательно
{
пытаться{
fos.close ();
} catch (Exception 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 ("Количество полей:"+fieldscount);
Dbffield [] df = new dbffield [fieldscount+2];
для (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 = новый объект [FieldScount+2];
// Извлекать файл пути один за другим и записать
while ((rowvalues = reader.nextrecord ())! = null)
{
для (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 Auto Generated Catch Blach
e.printstacktrace ();
}
}
}