Директору   Бухгалтеру   IT-специалисту   ЖКХ хостинг   LGPL
07.03.2016
Выпущено обновление
до версии 4.81.11


LGPL page
/ страница бесплатных открытых кодов /

DbfEngine Java API

DbfEngine - A Java API to read, write xBase(DBASE, Foxpro dbf files).
Also API allows read memory files (.mem) of Foxpro and may be Clipper. Samples for both operations you may see at DbfEngine javadoc.

This API is pure lightweight library without memory consumption and any third party libraries. There are no java loggers and modern mappers.
The DBF Java API is intended as engine for data exchange purposes.

Features

Engine is very small and fast.
API for reading is made as iterator, API for writing is made in manner as JDBC statement. It is allows to write compact Java code. See code samples below.

Also you can look inside your dbf file by invoking it through command line:

java -jar dbfEngine_bin-1.07.jar your.dbf

The result of parsing dbf header and content will be placed into textual file.

Limitations

This version was tested under MS Foxpro 2.6 without memo field support.

Requirements

DbfEngine requires JDK 1.5 or higher.

Licensing

DbfEngine is issued on under the GNU Lesser General Public License. For further information click here.

Download

You may download DbfEngine 1.07 (2016-JUL-11) version binary code here , source code here and all bundle here
Latest online Javadoc you may see here, version history you may see here.
DbfEngine - это Java API для чтения, записи xBase (DBASE, Foxpro) файлов. Также это API позволяет выполнять чтение .mem файлов для Foxpro и возможно Clipper'а. Примеры операций с .dbf и .mem файлами вы можете просмотреть в DbfEngine javadoc.

API представляет собой легковесную библиотеку без использования сторонних библиотек и неоправданного поглощения памяти. Библиотека предназначена для решения задач обмена данными. В частности ее использует РКЦ флекс для чтения реестров платежей из банков и для выгрузки данных в сторону организаций.

Особенности

API очень компактная и быстрая в работе.
В части чтения данных API выполнена как традиционный итератор, в части записи данных API выполнена как jdbc Statement. Все это позволяет писать компактный код. Смотрите примеры ниже.

Также при помощи этой библиотеки вы можете "заглянуть" внутрь вашего dbf файла через вызов командной строки:

java -jar dbfEngine_bin-1.07.jar your.dbf

Результат разбора шапки dbf файла и содержимого будет помещен в выходной текстовый файл.

Ограничения

Данная версия библиотеки проверена на dbf файлах MS Foxpro 2.6 без поддержки memo.

Требования

DbfEngine для своей работы требует JDK 1.5 или выше.

Лицензирование

API выпущена под лицензией LGPL.

Загрузка

Вы можете скачать бинарную библиотеку версии 1.07 (2016-07-11) здесь, а также ее исходный Java код или весь проект, включая javadoc
Онлайн Javadoc API смотреть здесь, историю версий смотреть здесь.
 
Donation

If this library was useful for your project please publish the link to this page.

If you have any questions or suggestions please do not hesitate to ask me by ask@smart-flex.ru.
Пожертвования

Если библиотека помогла вам, то мы были бы рады увидеть ссылку с вашего ресурса на эту страницу.
 
Code sample for reading and writing below: Ниже примеры чтения и записи dbf файлов

public class Fp26Reader {

 

      private static void testRead() {

            DbfIterator dbfIterator = DbfEngine.getReader(

                        Fp26Reader.class.getResourceAsStream("FP_26_SAMPLE.DBF"), null);

           

            while (dbfIterator.hasMoreRecords()) {

                  DbfRecord dbfRecord = dbfIterator.nextRecord();

                  String string = dbfRecord.getString("string");

                  float sumFloat = dbfRecord.getFloat("sum_f");

                  BigDecimal sumNumeric = dbfRecord.getBigDecimal("sum_n");

                  boolean bool = dbfRecord.getBoolean("bool_val");

                  Date date = dbfRecord.getDate("date_val");

                 

                  System.out.println(string + " " + sumFloat + " " + sumNumeric + " "

                              + bool + " " + date);

            }

      }

 

      public static void main(String[] args) {

            Fp26Reader.testRead();

      }

 

}

 

public class Fp26Writer {

 

      private static void testWrite() {

            DbfAppender dbfAppender = DbfEngine.getWriter("WRT_PERSON.DBF", DbfCodePages.Cp866);

            DbfColumn dc01 = new DbfColumn("magic", DbfColumnTypes.Logical, 0, 0);

            DbfColumn dc02 = new DbfColumn("actor", DbfColumnTypes.Character, 60, 0);

            DbfColumn dc03 = new DbfColumn("currdate", DbfColumnTypes.Date, 0, 0);

            DbfColumn dc04 = new DbfColumn("hit", DbfColumnTypes.Numeric, 10, 2);

            DbfColumn dc05 = new DbfColumn("forever", DbfColumnTypes.Logical, 0, 0);

            dbfAppender.defineColumns(dc01,dc02, dc03, dc04, dc05);

           

            DbfStatement statement = dbfAppender.getStatement();

            statement.setString("actor", "Chuck Norris");

            statement.setDate("currdate", new Date());

            statement.setBigDecimal("hit", new BigDecimal("500.5"));

            statement.insertStatement();

 

            statement.setBoolean("magic", Boolean.TRUE);

            statement.setString("actor", "Bruce Lee");

            statement.setBigDecimal("hit", new BigDecimal("1000.10"));

            statement.setBoolean("forever", Boolean.TRUE);

            statement.insertStatement();

           

            dbfAppender.writeDbfAndClose();

      }

      public static void main(String[] args) {

            Fp26Writer.testWrite();

      }

 

}