2009-08-18 5 views
6

Кто-нибудь знает какие-либо хорошие библиотеки для преобразования плоского файла в объекты Java? Я нашел flatworm, но я ищу альтернативы.Преобразование плоского файла в объекты Java

+0

Если это что-то вроде CSV (или любой файл с разделителями) или XML, это тривиально, чтобы прочитать его и создавать объекты из него. Не могли бы вы рассказать о формате файла и о том, что вы пытаетесь сделать? –

+4

Плоский файл - довольно широкая категория. Текстовый файл? CSV-файл? Сериализованный файл объекта? Что находится в «плоском файле» – Gandalf

+0

Что случилось с Flatworm? –

ответ

1

Вы также можете дать попробовать на Fixedformat4j. Мне нравится подход аннотаций, и очень просто определить пользовательский формат поля.

8

Быстрое обновление: червь не был активным в течение довольно долгое время, есть развилка имени BeanIO: http://www.beanio.org/

1

Вы хотели бы рассмотреть JRecordBind (я автор)

В отличие от других, он может обрабатывать и создавать плоские файлы, и использует простой XML-схему (так что вам не нужно изучать еще один синтаксис конфигурации). Некоторые пользователи перерабатывают один и тот же XSD для производства как webservice, так и плоских файлов.

пс: Я недавно переехал код github

1

Я не использовал этот JFlat, Но, кажется, это основа обеспечивает преобразование из плоского файла в объект Java.

Аналогичным образом BeanIO и Jsefa также предоставляет простой и гибкий API.

Вы можете попробовать с FlatPack - но это OLD и документы не являются хорошими, как JFlat или BeanIO

Apache Camel имеет FlatPack компонент, а также от 2.10 имеет BenaIO компонент

2

Другой вариант, что Я писал, что использует Java аннотаций JFileHelpers - http://jfilehelpers.com

в качестве примера аннотированный боба:

@FixedLengthRecord() 
public class Customer { 
    @FieldFixedLength(4) 
    public Integer custId; 

    @FieldAlign(alignMode=AlignMode.Right) 
    @FieldFixedLength(20) 
    public String name; 

    @FieldFixedLength(3) 
    public Integer rating; 

    @FieldTrim(trimMode=TrimMode.Right) 
    @FieldFixedLength(10) 
    @FieldConverter(converter = ConverterKind.Date, 
     format = "dd-MM-yyyy") 
    public Date addedDate; 

    @FieldFixedLength(3) 
    @FieldOptional 
    public String stockSymbol; 
} 

Тогда все, что вам нужно сделать, это:

FileHelperEngine<Customer> engine = 
     new FileHelperEngine<Customer>(Customer.class); 
    List<Customer> customers = 
     new ArrayList<Customer>(); 

    customers = engine.readResource(
     "/samples/customers-fixed.txt");