Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring批处理:文件的处理列表_Java_Spring_Spring Batch - Fatal编程技术网

Java Spring批处理:文件的处理列表

Java Spring批处理:文件的处理列表,java,spring,spring-batch,Java,Spring,Spring Batch,SpringBatch:我有一个需要处理的文件列表,并将其拆分为不同的文件和编写。我遵循了中提到的步骤 在本文中,我们使用 . 第一步很好。但是,从下一次迭代开始,它不再使用“input.file”的新值,而是继续使用相同的文件(在第一次迭代中使用)。有人能建议我是否可以在每次迭代中使用一个writer来获取文件的新动态值吗?我已经解决了这个问题: 以下是问题的正确描述: 实际上,代码与上面发布的链接中的代码类似。 唯一的区别是我将“input.file”传递给FlatFileOutputWr

SpringBatch:我有一个需要处理的文件列表,并将其拆分为不同的文件和编写。我遵循了中提到的步骤

在本文中,我们使用 .
第一步很好。但是,从下一次迭代开始,它不再使用“input.file”的新值,而是继续使用相同的文件(在第一次迭代中使用)。有人能建议我是否可以在每次迭代中使用一个writer来获取文件的新动态值吗?

我已经解决了这个问题:

以下是问题的正确描述:

实际上,代码与上面发布的链接中的代码类似。 唯一的区别是我将“input.file”传递给FlatFileOutputWriter 而不是FlatFileItemWriter

在此代码中,正在执行以下操作:

  • 我们以逗号分隔的文件名列表形式传递作业参数“input.files”
  • 在FileDecision类中,我们检索“input.files”参数,将其拆分 转换为字符串列表,并对其进行迭代。在每次迭代中,我们都会添加一个新参数 jobExecutionContext中的“input.file”
  • 在Springbean声明文件(xml文件)中,我们传递 “input.file”(在jobExecutionContext中)到FlatFileItemWriter(作为 资源属性)
  • 然后我们将这个FlatFileItemReader传递给一个作业步骤(multipleFileProcess.step1) 正在对其进行迭代。我们期望在每次迭代中都有一个新的值 对于“input.file”(文件末尾没有“s”),我们将能够编写 将内容添加到新的输出文件中

    但是,不是在单独的输出中写入 文件,它将所有迭代的内容写入单个输出 文件(在第一次迭代中设置为FlatFileItemWriter的输出文件)

    我实施的解决方案是:

  • 创建CustomItemWriter并将其注入作业步骤(multipleFileProcess.step1) 正在对其进行迭代
  • 将MultiResourceItemWriter注入CustomItemWriter
  • 将写入的FlatFileItemWrite注入到资源值为“”的MultiResourceItemWriter
  • 在CustomItemWriter@BeforeStep方法中, A.使用从“input.file”(在jobExecutionContext中)检索的文件值创建了一个新资源。 B将此新资源设置为MultiResourceItemWriter实例变量
  • 现在,我能够在每次迭代中编写单独的输出文件。 我将在周末后发布示例代码


    谢谢

    您必须发布您的代码及其生成的任何错误消息。首先,您必须发布您的工作和错误详细信息,以供其他开发人员解决。您可以使用org.springframework.batch.item.file.MultiResourceItemReader读取多个文件。实际上,代码与上面发布的链接中的代码相同。在此代码中,正在执行以下操作: