2009-08-18 13 views
6

Qualcuno conosce qualche buona libreria per convertire un file flat in oggetti Java? Ho trovato flatworm ma sto cercando alternative.Conversione di file flat in oggetti Java

+0

Se si tratta di qualcosa di simile a un file CSV (o qualsiasi file delimitato) o XML, è banale per leggere e creare oggetti fuori di esso. Potresti approfondire il formato del file e cosa stai cercando di fare? –

+4

Il file flat è una categoria piuttosto ampia. File di testo? File CSV? File oggetto serializzato? Cosa c'è nel "file flat" – Gandalf

+0

Cosa c'è di sbagliato in Flatworm? –

risposta

1

Si può anche dare una prova per Fixedformat4j. Mi piace l'approccio delle annotazioni ed è molto semplice definire un formato di campo personalizzato.

8

rapido aggiornamento: verme piatto non è stato attivo per un bel po ', c'è un bivio chiamato BeanIO: http://www.beanio.org/

1

Desiderate considerare JRecordBind (io sono il suo autore)

A differenza di altri, è in grado di analizzare e creare file flat e utilizza un semplice schema XML (in modo da non dover imparare ancora un'altra sintassi di configurazione). Alcuni utenti riciclano lo stesso XSD per produrre sia l'output di file Web sia di file flat.

ps: ho recentemente trasferito il codice per github

1

Non ho usato questo JFlat, ma sembra che questo quadro prevede la conversione da file flat per oggetto Java.

Analogamente BeanIO e Jsefa fornisce anche un'API semplice e flessibile.

Si può provare con FlatPack - ma è vecchio e la documentazione non sono buone come JFlat o BeanIO

Apache Camel ha componente Flatpack come pure da 2.10 ha BenaIO componente

2

Un'altra alternativa, che ho scritto che utilizza Java NOTE è JFileHelpers - http://jfilehelpers.com

Un esempio di fagioli con annotazioni:

@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; 
} 

Poi tutto quello che dovete fare è:

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

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