Spring批处理一个编码的压缩文件

Hug*_*cey 6 spring-batch

我正在调查使用spring批处理从编码的压缩文件处理记录.记录是可变长度的,其中嵌套的可变长度数据字段.

我是Spring和Spring Batch的新手,这就是我计划构建批处理配置的方法.

  • ItemReader需要将压缩(*.gz)文件输入流中的单个记录读入POJO(字节数组),该记录的长度将包含在流的前两个字节中.
  • ItemProcessor将解码字节数组并将信息存储在POJO中的相关属性中.
  • ItemWriter将填充数据库.

我最初的问题是理解如何设置ItemReader,我已经看了一些使用FlatFileItemReader的例子,但我的困难是期望有一个Line Mapper.在我的情况下,我不知道如何做到这一点(文件中没有一行的概念).

有一些文章表明使用自定义的BufferedReaderFactory,但很高兴看到一个有用的例子.

帮助将不胜感激.

Hug*_*cey 0

我的困惑是基于自定义 ItemReader 中的文件处理,如果我要在 read() 方法中打开并处理文件,我将必须跟踪我在文件中的位置等。我设法通过以下方式解决了这个问题在自定义 ItemReader 的构造函数中创建 BufferedInputStream (BufferedInputStream(new GZIPInputStream(new FileInputStream(file))),然后在步骤的每次迭代中在 read() 方法中处理该流。