读平面文件 也就是纯文本
定义:Txt文件
使用:FlatFileItemReader
常用方法:readLine、reader
方式一:字符串的截取
需求:读取user.txt,解析出用户信息,封装成下面的user对象
user.txt
1#dadfei#18
2#erfei#19
3#sanfei#17
4#sifei#16
5#wufei#15
@Data
public class User {
private Long id;
private String name;
private int age;
}
代码实现:
package com.springBatch.demo.flatFileReaderJob;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.*;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.ClassPathResource;
import java.util.List;
@EnableBatchProcessing
@SpringBootApplication
public class FlatReaderJob {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
// first job--step--chunk--itemreader --writer
@Bean
public ItemWriter<User> itemWriter() {
return new ItemWriter<User>() {
@Override
public void write(List<? extends User> items) throws Exception {
items.forEach(System.out::println);
}
};
}
@Bean
public FlatFileItemReader<User> itemReader() {
return new FlatFileItemReaderBuilder<User>()
.name("user-itemReader")//起名字
.resource(new ClassPathResource("user.txt"))//从哪里读
.delimited().delimiter("#")//分隔符是什么
.names("id","name","age")//分割出来的元素 归属于
.targetType(User.class)//分割后 封装到哪里
.build();
}
@Bean
public Step step() {
return stepBuilderFactory.get("step1")
.<User,User>chunk(1)
.reader(itemReader())
.writer(itemWriter())
.build();
}
@Bean
public Job job() {
return jobBuilderFactory.get("flat-reader-job")
.start(step())
.build();
}
public static void main(String[] args) {
SpringApplication.run(FlatReaderJob.class, args);
}
}
运行结果:
User(id=1, name=dadfei, age=18)
User(id=2, name=erfei, age=19)
User(id=3, name=sanfei, age=17)
User(id=4, name=sifei, age=16)
User(id=5, name=wufei, age=15)