有没有人知道将平面文件转换为Java对象的任何好的库?我找到了flatworm,但我正在寻找其他选择。
FFP - 平面文件解析库 http://jffp.sourceforge.net/
快速更新:扁虫已经活跃了很长一段时间,有一个名为BeanIO的分叉:http://www.beanio.org/
我写的另一个使用Java Annotations的替代方案是JFileHelpers - http://jfilehelpers.com
注释bean的示例:
@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;
}
那么你所要做的就是:
FileHelperEngine<Customer> engine =
new FileHelperEngine<Customer>(Customer.class);
List<Customer> customers =
new ArrayList<Customer>();
customers = engine.readResource(
"/samples/customers-fixed.txt");
我没有使用过这个JFlat,但似乎这个Framework提供了从Flat文件到Java对象的转换。
同样,BeanIO和Jsefa也提供了一个简单而灵活的API。
您可以尝试使用FlatPack - 但它是OLD并且文档不如JFlat或BeanIO
Apache Camel有Flatpack component以及2.10它有BeanIO component
您想要考虑JRecordBind(我是它的作者)
与其他人不同,它既可以解析也可以创建平面文件,它使用纯XML Schema(因此您不必学习另一种配置语法)。一些用户回收相同的XSD以生成web服务和平面文件输出。
ps:我最近把代码移到了github
你也可以试试Fixedformat4j。我喜欢注释方法,定义自定义字段格式非常简单。