我有一个spring批处理过程,它应该可以实现以下功能:
我读了多个文件,名称如下:
法国123456
比利时569834
法国896471
英国128956
英国789632
比利时896321
德国678900…等
所以我必须把所有法国文件的内容写进一个叫做“法国”的文件里,把所有德国文件的内容写进一个叫做“德国”的文件里……所以把普通的国家文件都写进一个文件里。
下面是我的批处理配置类,它读取所有文件并一次生成一个包含所有内容的文件。这不是必需的!!
@Component
@Configuration
@EnableBatchProcessing
public class batchConfig {
private FichierEclate FE =new FichierEclate();
private String[] fileName;
@Value("input/*")
private Resource[] inputResources;
private String[] Item=new String[100];
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public FlatFileItemReader<content> reader() {
FlatFileItemReader<content> fileItemReader= new FlatFileItemReader<>();
fileItemReader.setName("FFIR1");
//fileItemReader.setLinesToSkip(1);
//fileItemReader.setResource(new ClassPathResource("fichier-eclate-1.csv"));
fileItemReader.setLineMapper(lineMappe());
return fileItemReader ;
}
@Bean
public MultiResourceItemReader<content> multiFileReader() {
MultiResourceItemReader<content> multiFileItemReader= new MultiResourceItemReader<>();
multiFileItemReader.setResources(inputResources);
multiFileItemReader.setName("aaa");
multiFileItemReader.setDelegate(reader());
return multiFileItemReader ;
}
@Bean
public FlatFileItemWriter<content> writer()
{ FlatFileItemWriter<content> writer = new FlatFileItemWriter<>();
writer.setResource(new FileSystemResource("output.csv"));
writer.setAppendAllowed(true);
writer.setLineAggregator(new DelimitedLineAggregator<content>() {
{ //setDelimiter(",");
setFieldExtractor(new BeanWrapperFieldExtractor<content>() {
{ //setNames(new String[] { "AffaireID","CodeClasse","CodeAppli","NBcompte","NBlot" });
setNames(new String[] {"FileContent"});
} });}});
writer.setAppendAllowed(true); // pour ajouter du contenu à la fin du fichier au lieu d'écraser l'ancien contenu à chaque fois
return writer; }
@Bean
public LineMapper<content> lineMappe(){
DefaultLineMapper<content> lineMapper= new DefaultLineMapper<>();
DelimitedLineTokenizer lineTokenizer=new DelimitedLineTokenizer();
//lineTokenizer.setDelimiter(",");
lineTokenizer.setStrict(false);
lineTokenizer.setNames("FileContent");
lineMapper.setLineTokenizer(lineTokenizer);
BeanWrapperFieldSetMapper fieldSetMapper=new BeanWrapperFieldSetMapper();
fieldSetMapper.setTargetType(content.class);
lineMapper.setFieldSetMapper(fieldSetMapper);
return lineMapper; }
@Bean
public Job readCSVFilesJob(Step step1) {
return jobBuilderFactory
.get("readCSVFilesJob")
.incrementer(new RunIdIncrementer())
.start(step1)
.build(); }
@Bean
public Step step1(FlatFileItemWriter<content> writer) {
return stepBuilderFactory.get("step1").<content, content>chunk(2)
.reader(multiFileReader())
.writer(writer)
.build();}}
如何在处理器中添加此条件?谢谢您,
暂无答案!
目前还没有任何答案,快来回答吧!