私はCSVファイルから読み込み、画面に行を書き込むためにSpring Batchを使用しています。 私の仕事は3つの部分で構成されています: パート1:ディスク上のINPUTディレクトリにCSVファイルが存在するかどうかを確認し、TRUEを返した場合はPRODという別のディレクトリに移動します。 パート2:FlatFileItemReaderを使用してCSVファイルからデータを抽出します。 パート3:すべてのアイテムを画面に書き込みます。ファイルを移動した後にFlatFileItemReaderのリソースが見つかりません
問題はFlatFileItemReaderがここjava.lang.IllegalArgumentException: Input resource must be set
によって引き起こさorg.springframework.batch.item.ItemStreamException: Failed to initialize the reader
が私のコードでスローです:
@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ファイルを見つけることができないということですリソース! リソースの割り当てを延期し、この例外を回避する方法はありますか?
[タグ:バッチファイル]タグは、多くのファイルを処理することを意味しないことに注意してください。タグの上にマウスを置くと、その実際の意味を見ることができます。 – SteveFest
@SteveFest、そうです。しかし、それは自動的に提案されたので、私はそれが同じコンテキストではないことを知らなかったそれを選んだ;)とにかくありがとう –
ありがとう、返信してください。間違った「自動修正」の別のケースを見るのは悲しいことです。 – SteveFest