Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
从目录Spring批处理文件ReadingMessageSource读取所有文件_Spring_Spring Batch - Fatal编程技术网

从目录Spring批处理文件ReadingMessageSource读取所有文件

从目录Spring批处理文件ReadingMessageSource读取所有文件,spring,spring-batch,Spring,Spring Batch,我在应用程序中使用spring批处理。基本上,我所要做的就是从输入目录中读取所有XML文件。当我得到所有XML文件时,每个文件都需要转换为根对象。我必须将该对象拆分为两个对象,并将它们打印到CSV文件中。因此,如果输入文件夹中有10个XML文件,我需要生成20行的CSV。如果有150行,CSV将有300行,等等。我打算使用FileReadingMessageSource。它有一个队列。但问题是该队列的返回类型。它返回文件,我需要的是队列列表。我可以从我的阅读器的目录中获取整个XML文件列表吗?I

我在应用程序中使用spring批处理。基本上,我所要做的就是从输入目录中读取所有XML文件。当我得到所有XML文件时,每个文件都需要转换为根对象。我必须将该对象拆分为两个对象,并将它们打印到CSV文件中。因此,如果输入文件夹中有10个XML文件,我需要生成20行的CSV。如果有150行,CSV将有300行,等等。我打算使用
FileReadingMessageSource
。它有一个队列。但问题是该队列的返回类型。它返回文件,我需要的是队列列表。我可以从我的阅读器的目录中获取整个XML文件列表吗?

IMO您不需要在基本用例中使用
FileReadingMessageSource
(并引入Spring集成)

您可以创建一个返回
文件的读取器
,一个将
文件
映射到根对象(并拆分为两个对象)的处理器,以及最后一个
FlatFileItemWriter
以生成CSV输出

编辑:添加阅读器示例:

@Bean
public ItemReader<File> itemReader() throws IOException {
    List<File> files = Files.walk(Paths.get("/path/to/directory"))
            .filter(Files::isRegularFile)
            .map(Path::toFile)
            .collect(Collectors.toList());
    return new IteratorItemReader<>(files);
}
@Bean
public ItemReader ItemReader()引发IOException{
List files=files.walk(path.get(“/path/to/directory”))
.filter(文件::isRegularFile)
.map(路径::toFile)
.collect(Collectors.toList());
返回新的IteratorItemReader(文件);
}

这不是解决方案。我只是想让阅读器返回一个文件列表,而不仅仅是一个文件。添加了一个阅读器示例。如果您想要一个阅读器同时返回目录中所有文件的列表,那么您可能需要使用tasklet而不是面向块的步骤。Spring批处理中块处理的思想是一次读取一个项目(您的案例中的文件)。谢谢您-您的回答和读者示例引导我找到并成为如何将图像文件(*.arw,*.jpg)读取到Spring批处理步骤中的第一个提示,尽管我仍在进行中(ItemReader部分不涉及“二进制”文件格式)。