2009-08-18 3 views
6

Kennt jemand gute Bibliotheken, um eine flache Datei in Java-Objekte umzuwandeln? Ich habe flatworm gefunden, aber ich suche nach Alternativen.Flache Datei in Java-Objekte konvertieren

+0

Wenn es so etwas wie eine CSV (oder jede getrennte Datei) oder XML ist es trivial ist es in zu lesen und Objekte aus der IT erstellen. Können Sie das Dateiformat und was Sie versuchen zu tun? –

+4

Flachdatei ist eine ziemlich breite Kategorie. Textdatei? CSV-Datei? Serialisierte Objektdatei? Was ist in der "flachen Datei"? – Gandalf

+0

Was ist los mit Flatworm? –

Antwort

1

Sie auch einen Versuch zu Fixedformat4j geben kann. Ich mag den Annotations-Ansatz und es ist sehr einfach, ein benutzerdefiniertes Feldformat zu definieren.

8

Schnell Update: flatworm hat schon eine ganze Weile nicht mehr aktiv war, gibt es eine Gabel namens BeanIO: http://www.beanio.org/

1

Sie möchten JRecordBind betrachten (ich bin sein Autor)

Im Gegensatz zu anderen, Es ist in der Lage, flache Dateien zu analysieren und zu erstellen, und es verwendet einfaches XML-Schema (Sie müssen also keine weitere Konfigurationssyntax lernen). Einige Benutzer recyceln die gleiche XSD für die Ausgabe von Webservice und Flatfiles.

ps: Ich habe vor kurzem umgezogen, den Code zu github

1

ich nicht diese JFlat verwendet haben, aber es scheint, dieses Framework Java-Objekt Konvertierung von Flat-Datei zur Verfügung stellt.

Ähnlich BeanIO und Jsefa bietet auch eine einfache und flexible API.

Sie können mit FlatPack versuchen - aber es ist alt und die docs sind nicht gut, wie JFlat oder BeanIO

Apache Camel hat Flatpack Komponente sowie von 2,10 es BenaIO Komponente

2

Eine andere Alternative hat, dass ich schrieb, dass verwendet Java Annotations ist JFileHelpers - http://jfilehelpers.com

Ein Beispiel kommentierte Bohne:

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

Dann alles, was Sie tun müssen, ist:

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

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