gpt4 book ai didi

java - 移动文件后找不到 FlatFileItemReader 的资源

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:31 24 4
gpt4 key购买 nike

我正在使用 Spring Batch 读取 CSV 文件并将行写入屏幕上。我的工作由三部分组成:第 1 部分:验证 CSV 文件是否存在于我的磁盘上的某个 INPUT 目录中,如果返回 TRUE,则该文件将被移动到另一个名为 PROD 的目录。第 2 部分:使用 FlatFileItemReader 从 CSV 文件中提取数据。第 3 部分:将所有项目写入屏幕。

问题是FlatFileItemReader抛出org.springframework.batch.item.ItemStreamException:无法初始化阅读器,原因是java.lang.IllegalArgumentException:必须设置输入资源

这是我的代码:

@Bean
public FlatFileItemReader<UniversInvestissement> reader() {
FlatFileItemReader<UniversInvestissement> reader = new FlatFileItemReader<>();
File csvFile = new File("C://INPUT/data.csv");
Resource resource = resourceLoader.getResource("file:" + csvFile.getAbsolutePath());
reader.setLinesToSkip(1);
reader.setResource(resource);
DefaultLineMapper lineMapper = new DefaultLineMapper();

DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
tokenizer.setNames(new String[]{"COL1", "COL2", "COL3", "COL4"});
tokenizer.setDelimiter(";");

FieldSetMapper fieldSetMapper = new UniversInvestissementFieldSetMapper();
lineMapper.setLineTokenizer(tokenizer);
lineMapper.setFieldSetMapper(fieldSetMapper);

reader.setLineMapper(lineMapper);

reader.setEncoding("Cp1252");
return reader;
}

@Bean
public UniversInvestissementWriter writer() {
return new UniversInvestissementWriter();
}

@Bean
public UniversInvestissementProcessor processor() {
return new UniversInvestissementProcessor();
}

@Bean
public Step extractData() {
return steps.get("extractData")
.<UniversInvestissement, UniversInvestissementProcessorResult>chunk(1)
.reader(reader())
.processor(processor())
.writer(writer())
.build();
}

实际上,问题是当 FlatFileItemReader 初始化时,它找不到 CSV 文件作为资源!有没有办法推迟资源分配并避免这种异常?

最佳答案

您可以使用reader.setStrict(false);,如果您将严格模式设置为 false,则阅读器将不会抛出异常。您可能必须使用 @StepScope 来让读者变得懒惰。我正在使用相同的设置,它对我来说工作正常,希望这对您有帮助

关于java - 移动文件后找不到 FlatFileItemReader 的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47990491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com