Convertendo arquivo plano em objetos java [fechados
Pergunta
Alguém sabe de boas bibliotecas para converter um arquivo plano em objetos Java? eu encontrei Flatworm Mas estou procurando alternativas.
Solução
FFP - Biblioteca de análise de arquivo plano
http://jffp.sourceforge.net/
Outras dicas
Atualização rápida: Flatworm não está ativo há um bom tempo, há um garfo chamado Beanio:http://www.beanio.org/
Outra alternativa, que escrevi que usa as anotações Java é o jfilehelpers - http://jfilehelpers.com
Um exemplo de feijão 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;
}
Então tudo que você precisa fazer é:
FileHelperEngine<Customer> engine =
new FileHelperEngine<Customer>(Customer.class);
List<Customer> customers =
new ArrayList<Customer>();
customers = engine.readResource(
"/samples/customers-fixed.txt");
Eu não usei isso Jflat, Mas parece que essa estrutura fornece conversão de arquivo plano em objeto Java.
De forma similar Beanio e JSEFA Também fornece uma API simples e flexível.
Você pode tentar com Flatpack - mas é velho e os documentos não são bons como jflat ou beanio
Apache Camel tem Componente Flatpack bem como de 2.10 tem Componente Beanio
Você gostaria de considerar Jrecordbind (Eu sou seu autor)
Ao contrário de outros, é capaz de analisar e criar arquivos planos e usa esquema XML simples (para que você não precise aprender mais uma sintaxe de configuração). Alguns usuários reciclam o mesmo XSD para produzir o WebService e a saída de arquivos planos.
PS: Eu movi recentemente o código para Github
Você também pode tentar FILLFORMAT4J. Gosto da abordagem das anotações e é muito simples definir um formato de campo personalizado.