Czy ktoś wie o dobrych bibliotekach do konwersji płaskiego pliku na obiekty Java? Znalazłem flatworm, ale szukam alternatyw.Konwersja płaskiego pliku na obiekty Java
Odpowiedz
FFP - Płaski plik parsowania biblioteki
http://jffp.sourceforge.net/
Można również spróbować do Fixedformat4j. Podoba mi się podejście do adnotacji i bardzo łatwo jest zdefiniować niestandardowy format pola.
Szybka zmiana: flatworm nie działa już od dłuższego czasu, jest widelec nazwie BeanIO: http://www.beanio.org/
Chcesz rozważyć JRecordBind (jestem jego autorem)
W przeciwieństwie do innych, potrafi zarówno parsować, jak i tworzyć płaskie pliki i używa zwykłego schematu XML (więc nie musisz się uczyć kolejnej składni konfiguracji). Niektórzy użytkownicy przetwarzają ten sam XSD w celu generowania zarówno danych wyjściowych usługi sieciowej, jak i plików płaskich.
ps: Ja niedawno przeniósł kod do github
Nie używałem tego JFlat, ale wydaje się to ramowa zapewnia konwersję z płaskiego pliku do obiektu Java.
Podobnie BeanIO i Jsefa zapewnia również prosty i elastyczny interfejs API.
Można spróbować z FlatPack - ale to jest stary i docs nie są dobre jak JFlat lub BeanIO
Apache Camel posiada komponent FlatPack jak również z 2.10 ma BenaIO komponentu
Inną alternatywą, że pisałem, że używa Java adnotacje jest JFileHelpers - http://jfilehelpers.com
przykładem fasoli adnotacjami:
@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;
}
Następnie wszystko co musisz zrobić, to:
FileHelperEngine<Customer> engine =
new FileHelperEngine<Customer>(Customer.class);
List<Customer> customers =
new ArrayList<Customer>();
customers = engine.readResource(
"/samples/customers-fixed.txt");
Jeśli jest coś takiego jak CSV (lub ograniczonego pliku) lub XML, to trywialne, aby przeczytać go i tworzyć obiekty z niego. Czy mógłbyś rozwinąć format pliku i to, co próbujesz zrobić? –
Płaski plik to dość szeroka kategoria. Plik tekstowy? Plik CSV? Plik Serialized Object? Co jest w "płaskim pliku" – Gandalf
Co jest nie tak z Flatwormem? –