Одной из распространенных задач в Spring Batch, для которой он используется, является анализ CSV-файлов, но CSV-файлы бывают разных форм и форм… и некоторые из них синтаксически неверны. В настоящее время я пытаюсь проанализировать недопустимый CSV-файл: Мой файл CSV data.CSV:
"1;13/4/1992;16/7/2006"
"2;31/5/1993;1/8/2009"
"3;21/4/1990;27/4/2010"
Я использовал этот код здесь. Это работает для меня, но я хочу использовать собственный CSV! любое предложение, пожалуйста?
Вы возвращаетесь из своего цикла. Этот код всегда будет обрабатывать первую строку, а затем возвращаться. Я предполагаю, что это не то, что вы хотите сделать. - вам действительно нужно описать проблему, с которой вы столкнулись, если исправление не решает ее.
Скорее всего, это повторяющийся вопрос, касающийся базового чтения файлов: stackoverflow.com/a/27324399/196869.
Я обновил свой код @devdotlog, вы можете увидеть файл




Как я уже сказал в комментарии к ответу, на который вы ссылаетесь, вы можете использовать FlatFileItemReader вместо ListItemReader, и это должно сработать. Я использовал ListItemReader, чтобы предоставить автономный пример, который вы можете запустить (без необходимости загружать CSV-файл и т. д.). Суть другого вопроса заключалась в том, как обрезать начальные/конечные " перед разбором строк, и хитрость заключалась в использовании процессора составных элементов, как показано в примере.
Вам не нужно создавать новый ридер, вот пример FlatFileItemReader, который вы можете использовать с тем же примером:
@Bean
public FlatFileItemReader<String> itemReader() {
return new FlatFileItemReaderBuilder<String>()
.name("itemReader")
.resource(new FileSystemResource("/absolute/path/to/file"))
.lineMapper(new PassThroughLineMapper())
.build();
}
Надеюсь это поможет.
покажи мне ошибку и данные-1.csv.