如何使用spring writer将EBCDIC byte []写入文件?

时间:2016-06-29 21:25:36

标签: spring spring-batch

我有一个格式化的ebcdic byte [],我使用自定义代码创建。现在我想写入文件。我可以使用Java来做到这一点。我试图检查我是否可以使用Spring编写器执行此操作。 我尝试使用FlatFileItemWriter。但只是写了一组文件对象。另外问题是Item编写器还在每个项目后面引入了一个新行。然而,Ebcdic是整个文件的单个字节流。 ItemWriter ebcdicByteWriter;

@Override
public void write(List<? extends AccountInvoice> items) throws Exception {
    ArrayList<byte[]> finalList= new ArrayList<byte[]>();

    for (AccountInvoice item : items) {  
        finalList.add(item.getEbcdicBytes()); 
    } 

    ebcdicByteWriter.write(finalList); 

} 

1 个答案:

答案 0 :(得分:1)

FlatFileItemWriter有一个钩子来更改行分隔符:setLineSeparator(java.lang.String lineSeparator)。为什么不直接传递一个空字符串,以便连接线?

编辑:使用行聚合器将您的字节数组转换为EBCDIC字符串。

public class BytesAggregator<byte[]> implements LineAggregator {
    @Override
    public String aggregate(byte[] item) {
        return new String(bytes, "Cp1047");
    }
}