将平面文件转换为Java对象

时间:2009-08-18 14:53:25

标签: java flat-file

有人知道将平面文件转换为Java对象的任何好库吗?我找到了flatworm,但我正在寻找替代方案。

6 个答案:

答案 0 :(得分:9)

快速更新:扁虫已经活跃了很长一段时间,有一个名为BeanIO的分支: http://www.beanio.org/

答案 1 :(得分:4)

FFP - 平面文件解析库
http://jffp.sourceforge.net/

答案 2 :(得分:2)

我没有使用过这个 JFlat ,但似乎这个框架提供了从Flat文件到Java对象的转换。

同样,BeanIOJsefa也提供了一个简单而灵活的API。

您可以尝试使用FlatPack - 但它是旧版本且文档不如JFlat或BeanIO

Apache Camel有Flatpack component以及2.10它有BeanIO component

答案 3 :(得分:2)

我写的另一个使用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");

答案 4 :(得分:1)

您也可以尝试Fixedformat4j。 我喜欢注释方法,定义自定义字段格式非常简单。

答案 5 :(得分:1)

您想考虑JRecordBind(我是它的作者)

与其他人不同,它既可以解析也可以创建平面文件,并且它使用纯XML Schema(因此您不必学习另一种配置语法)。 一些用户回收相同的XSD以生成web服务和平面文件输出。

ps:我最近将代码移到github