固定长度文件中的多个长度=“无界”

时间:2015-04-02 12:31:12

标签: java parsing bean-io fixed-length-file

我遇到了一个问题,我正在寻求你的帮助! 使用BeanIO 2.1并处理固定长度文件,我目前正在尝试检索结构类似:28C:5n / 5n 的记录

  • ':28C:' :修复
  • 5个数字(最多)
  • ' /' :修复
  • 5个数字(最多)

示例:

  • :28C:61/00005
  • :28C:100/00001
  • :28C:12345分之12345

以下是代码片段:

<record name="statementNumber" class="com.batch.records.StatementNumber" occurs="1">
    <field name="tag" type="string" length="5" rid="true" literal=":28C:" ignore="true" />
    <field name="statementNr" type="int" length="unbounded" maxLength="5" />
    <field name="separator" type="string" length="1" rid="true" literal="/" ignore="true" />
    <field name="sequenceNr" type="int" length="unbounded" maxLength="5" />
</record>

运行我的解析器时,我得到了这个例外:

Cannot determine field position, field is preceded by another component with indeterminate occurrencesor unbounded length 

我的问题是:如何告诉BeanIO该字段&#39; /&#39;实际上是两个变量字段之间的分隔符?

提前致谢

1 个答案:

答案 0 :(得分:1)

一条线上只能有一个无界长度的场。 BeanIO documentation说:

  

固定长度记录中最后一个字段的长度可以设置为无限制以禁用填充,并在其他固定长度记录的末尾允许单个可变长度字段。

老实说,我不确定是否可以使用BeanIO来完成。可以选择将5n/5n字段完全读入Java作为1字段并在代码中将其分解为/而不是BeanIO吗?

相关问题