如何设置我在实体中读取的每个csv文件名并将其发送到处理器,我有以下读取器代码:
在以下实体中,我有一个字段fileName,我想用我正在读取的当前csv文件名设置它,另一个字段我想用csv数据设置它。
实体
@Data
@AllArgsConstructor
public class TestDTO {
private String fileName;
private String name;
private String lastName;
}
密码
@Configuration
public class testReader{
@Bean
public FlatFileItemReader<TestDTO> csvFileReader() {
FlatFileItemReader<TestDTO> reader = new FlatFileItemReader<>();
reader.linesToSkip(1) // Skip header row if needed
reader.lineMapper(csvLineMapper())
return reader;
}
@Bean("testReader")
public MultiResourceItemReader<testDTO> multiResourceReader() throws IOException {
Resource[] files = csvFileResource();
MultiResourceItemReader<testDTO> resourceItemReader = new MultiResourceItemReader<>();
resourceItemReader.setResources(files);
resourceItemReader.setDelegate(csvFileReader());
return resourceItemReader;
}
@Bean
public DefaultLineMapper<TestDTO> csvLineMapper() {
DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
tokenizer.setNames("Name","Lastname");
BeanWrapperFieldSetMapper<YourDataClass> fieldSetMapper = new BeanWrapperFieldSetMapper<>();
fieldSetMapper.setTargetType(TestDTO.class);
DefaultLineMapper<TestDTO> lineMapper = new DefaultLineMapper<>();
lineMapper.setLineTokenizer(tokenizer);
lineMapper.setFieldSetMapper(fieldSetMapper);
return lineMapper;
}
@Bean
public Resource[] csvFileResource() throws IOException {
// Specify the folder path where your CSV files are generated
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("file:input/*.csv");
if (resources.length == 0) {
throw new FileNotFoundException("No CSV files found in the specified folder.");
}
return resources;
}
}