Spring batch FlatFileItemWriter在使用Tasklet方法时不生成文件

Spring batch FlatFileItemWriter在使用Tasklet方法时不生成文件,spring-batch,batch-processing,spring-batch-tasklet,tasklet,itemwriter,Spring Batch,Batch Processing,Spring Batch Tasklet,Tasklet,Itemwriter,我使用tasklet方法编写了以下代码,以生成包含数据的文件 公共类PersonInfoFileWriter实现Tasklet{ @自动连线 PersonInfoFileUtil PersonInfoFileUtil; public void write(ExecutionContext ExecutionContext)引发IOException{ List personinfo List=null; FlatFileItemWriter flatFileWriter=新FlatFileIte

我使用
tasklet
方法编写了以下代码,以生成包含数据的文件

公共类PersonInfoFileWriter实现Tasklet{
@自动连线
PersonInfoFileUtil PersonInfoFileUtil;
public void write(ExecutionContext ExecutionContext)引发IOException{
List personinfo List=null;
FlatFileItemWriter flatFileWriter=新FlatFileItemWriter();
flatFileWriter.setResource(新文件系统资源(“C:\\test\\”
+LocalDate.now()格式(DateTimeFormatter.BASIC_ISO_DATE)+“.txt”);
试一试{
flatFileWriter.open(executionContext);
String personName=(String)executionContext.get(“personInfo”);
//从数据库中按姓名获取此人的详细信息,并将值分配给PersonInfo
PersonInfo列表=PersonInfo文件util.setDataForPersonInfo文件(personName);
setName(“个人详细信息文件”);
flatFileWriter.setShouldDeleteIfEmpty(true);
flatFileWriter.setAppendAllowed(true);
flatFileWriter.setLineSeparator(“\n”);
setHeaderCallback(新的FlatFileHeaderCallback(){
@凌驾
public void writeHeader(Writer-Writer)引发IOException{
作家(
“PersonId^Name^程序^ProgramType”);
}
});
flatFileWriter.setLineAggregator(新的DelimitedLineAggregator(){
{
设置分隔符(“^”);
setFieldExtractor((FieldExtractor)新BeanWrapperFieldExtractor(){
{
setNames(新字符串[]{“personId”、“name”、“program”、“programType”});
}
});
}
});

String lines=flatFileWriter.doWrite((List在
write
方法中,您创建
FlatFileItemWriter
的实例,在其上设置一些属性,然后对其调用
close


您没有调用
open()
write()
方法,这就是它没有生成文件的原因。

write
方法中,您创建了
FlatFileItemWriter
的实例,对其设置了一些属性,然后对其调用
close


您没有调用
open()
write()
方法,这就是它没有生成文件的原因。

我按照您所说的那样做了。现在文件正在生成,但文件是空的。我已经编辑了关于如何执行此操作的问题。请告诉我哪里出错了。我添加了flatFileWriter.setShouldDeleteIfEmpty(true);并将数据打印到文件中。但它缺少我用setHeaderCallback()设置的头我按照你说的做了。现在文件正在生成,但是文件是空的。我已经编辑了关于我如何做的问题。请告诉我哪里出了问题。我添加了flatFileWriter.setShouldDeleteIfEmpty(true);并将数据打印到文件中。但它缺少我用setHeaderCallback()设置的头