将平面文件转换为Java对象

7

请问是否有任何好的库可以将平面文件转换为Java对象?我找到了flatworm,但我正在寻找其他选择。


如果它是像 CSV(或任何分隔文件)或 XML 这样的东西,那么读入并创建对象就很容易。您可以详细说明一下文件格式以及您要做什么吗? - Thomas Owens
4
平面文件是一个相当广泛的类别。文本文件?CSV文件?序列化对象文件?"平面文件"中包含什么内容? - Gandalf
没有问题,只是想看看是否有更适合我需求的替代方案。 - mkoryak
1
平面文件是固定宽度列的文本文件 - 正确。我需要解析这样的文件。 - mkoryak
你正在寻找FFPOJO:https://github.com/ffpojo/ffpojo - gibaholms
6个回答

9
快速更新:flatworm已经有一段时间没有活跃了,现在有一个名为BeanIO的分支: http://www.beanio.org/

4

2

另一个选择是我写的使用Java注解的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");

2

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

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

你可以尝试使用FlatPack - 但它已经过时了,文档不如JFlat或BeanIO好。

Apache Camel也有Flatpack组件,自2.10版本开始还有BeanIO组件


1

你可以考虑使用JRecordBind(我是它的作者)

与其他工具不同,它能够解析和创建平面文件,并且使用普通的XML Schema(因此您不必学习另一种配置语法)。 一些用户将相同的XSD用于生成Web服务和平面文件输出。

附注:我最近将代码移动到了github


1
你也可以尝试一下Fixedformat4j。我喜欢注解的方式,它非常简单定义一个自定义的字段格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接