CSV 파일을 읽고 화면에 선을 쓰려면 Spring Batch를 사용하고 있습니다. 내 직업은 3 부분으로 구성됩니다. 1 부 : 내 디스크의 일부 INPUT 디렉토리에 CSV 파일이 있는지 확인하고, TRUE를 반환하면 파일이 PROD라는 다른 디렉토리로 이동합니다. 2 부 : FlatFileItemReader를 사용하여 CSV 파일에서 데이터 추출. 3 부 : 모든 항목을 화면에 씁니다.파일을 이동 한 후 FlatFileItemReader에 대한 Unfound 리소스
문제는 FlatFileItemReader가 org.springframework.batch.item.ItemStreamException: Failed to initialize the reader
여기
java.lang.IllegalArgumentException: Input resource must be set
에 의한 던졌습니다 것은 내 코드입니다 :
@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