spring批量写入固定格式文件

时间:2012-06-21 13:40:19

标签: java string spring spring-batch

我有一个项目编写器如下:

     

<beans:property name="lineAggregator">
<beans:bean class="org.springframework.batch.item.file.transform.FormatterLineAggregator">
        <beans:property name="fieldExtractor">
                <beans:bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
                 <beans:property name="names" value="column1, column2, column3, column4 " /> 
                </beans:bean>
            </beans:property>

            <beans:property name="format" value="%-8s%-12s%-11s%-16s" /> 
        </beans:bean>
    </beans:property>

很明显,我正在将4列写入固定格式文件,其列长分别为8,12,11和16。

但是,如果第1列的字符串是14个字符而不是8个字符,则输出文件通过向前推整行来盲目地容纳所有14个字符。

THIS IS A TEST

Expecting: 
THIS IS COL2STARTS

Getting: 
THIS IS A TESTCOL2STARTS

如何避免这种情况?

其余字符是否应该被截断并且只写入前8个字符?

我是否需要在我的代码中进行验证,严格按照列的预期只传递8个字符?

1 个答案:

答案 0 :(得分:1)

您必须设置精度和宽度。试试这个格式化程序字符串:

<beans:property name="format" value="%-8.8s%-12.12s%-11.11s%-16.16s" /> 

请参阅:FormatterLineAggregatorFormatter