2009-08-18 17 views
6

¿Alguien sabe de alguna buena biblioteca para convertir un archivo plano en objetos Java? Encontré flatworm pero estoy buscando alternativas.Conversión de archivo plano a objetos Java

+0

Si se trata de algo así como un archivo CSV (o cualquier archivo delimitado) o XML, es trivial para leer y crear objetos fuera de ella. ¿Podría explicar el formato de archivo y lo que está tratando de hacer? –

+4

El archivo plano es una categoría bastante amplia. ¿Archivo de texto? Archivo CSV? ¿Archivo de objeto serializado? ¿Qué hay en el "archivo plano" – Gandalf

+0

¿Qué pasa con Flatworm? –

Respuesta

1

También puede darle una oportunidad a Fixedformat4j. Me gusta el enfoque de anotaciones y es muy simple definir un formato de campo personalizado.

8

rápida actualización gusano plano no ha estado activo durante bastante tiempo, hay un tenedor llamado BeanIO: http://www.beanio.org/

1

¿Le gustaría tener en cuenta JRecordBind (soy su autor)

diferencia de otros, es capaz de analizar y crear archivos planos y utiliza un esquema XML simple (para que no tenga que aprender otra sintaxis de configuración). Algunos usuarios reciclan el mismo XSD para producir salida de servicio web y archivos planos.

PS: He recientemente trasladó el código para github

1

no he utilizado este JFlat, pero parece que este marco proporciona la conversión de archivos planos de objetos Java.

Similarmente BeanIO y Jsefa también proporciona una API simple y flexible.

Usted puede tratar con FlatPack - pero es viejo y los documentos no son buenos como JFlat o BeanIO

Apache Camel tiene componente Flatpack así como de 2.10 tiene BenaIO componente

2

Otra alternativa, que escribí que utiliza Java Anotaciones es JFileHelpers - http://jfilehelpers.com

Un ejemplo de bean anotado:

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

Entonces todo lo que tiene que hacer es:

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

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