Я только что нашел действительно классную "основу" для своих целей.Он называется fixedformat4j, и он делает именно то, что я хочу, и с очень высокой производительностью, даже если он немного староват.
Вот базовый пример, найденный на его веб-сайте (http://fixedformat4j.ancientprogramming.com/):
@Record
public class BasicRecord {
private String stringData;
private Integer integerData;
private Date dateData;
@Field(offset = 1, length = 10)
public String getStringData() {
return stringData;
}
public void setStringData(String stringData) {
this.stringData = stringData;
}
@Field(offset = 11, length = 5, align = Align.RIGHT, paddingChar = '0')
public Integer getIntegerData() {
return integerData;
}
public void setIntegerData(Integer integerData) {
this.integerData = integerData;
}
@Field(offset = 16, length = 10)
@FixedFormatPattern("yyyy-MM-dd")
public Date getDateData() {
return dateData;
}
public void setDateData(Date dateData) {
this.dateData = dateData;
}
}
Этот аннотированный класс теперь можно загружать и экспортировать с помощью FixedFormatManager
public class BasicUsage {
private static FixedFormatManager manager = new FixedFormatManagerImpl();
public static void main(String[] args) {
String string = "string 001232008-05-29";
BasicRecord record = manager.load(BasicRecord.class, string);
System.out.println("The parsed string: " + record.getStringData());
System.out.println("The parsed integer: " + record.getIntegerData());
System.out.println("The parsed date: " + record.getDateData());
record.setIntegerData(100);
System.out.println("Exported: " + manager.export(record));
}
}