Spring Batch FlatFileItemWriter не записывает данные в файл

Я новичок в приложении Spring Batch. Я пытаюсь использовать FlatFileItemWriter записать данные в файл. Задача заключается в том, что приложение создает файл по заданному пути, но теперь записывает в него фактический контент.

Ниже приведены подробности, связанные с кодом:

List<String> dataFileList : Этот список содержит данные, которые я хочу записать в файл

FlatFileItemWriter<String> writer = new FlatFileItemWriter<>();
writer.setResource(new FileSystemResource("C:\\Desktop\\test"));
writer.open(new ExecutionContext());
writer.setLineAggregator(new PassThroughLineAggregator<>());
writer.setAppendAllowed(true);
writer.write(dataFileList);
writer.close();

Это просто создание файла в нужном месте, но содержимое не записывается в файл.

Я что-то пропустил? Помощь высоко ценится.

Спасибо!

2 ответа

Это неправильный способ использования данных Spring Batch Writer и Writer. Вы должны сначала объявить bean of Writer.

  • Определить Job Bean
  • Определить Step Bean
  • Используйте ваш бин Writer в Step

Посмотрите на следующие примеры:

https://github.com/pkainulainen/spring-batch-examples/blob/master/spring-boot/src/main/java/net/petrikainulainen/springbatch/csv/in/CsvFileToDatabaseJobConfig.java

https://spring.io/guides/gs/batch-processing/

Вам, вероятно, нужно принудительно выполнить синхронизацию с диском. Из документов по адресу https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/file/FlatFileItemWriter.html,

setForceSync

public void setForceSync(boolean forceSync)

Flag to indicate that changes should be force-synced to disk on flush. Defaults to false, which means that even with a local disk changes could be lost if the OS crashes in between a write and a cache flush. Setting to true may result in slower performance for usage patterns involving many frequent writes.

Parameters:
    forceSync - the flag value to set
Другие вопросы по тегам