Hallo zusammen,
ich bin gerade dabei eine CSV-Datei auszulesen. Und die Werte die ich dort ausgelesen habe, sollen anschließend in eine Excel Datei importiert werden.
Jetzt versuche ich den FlatFileItemReader stand alone zu verwenden (kein Spring batch) um dann anschließend die Zeilen auf der Konsole ausgeben zu lassen.
Code sieht wie folgt aus:
Wenn ichd en Code ausführe tritt folgender Fehler auf:
Hat hierzu jemand eine Lösung ? Oder hat jemand schon Mal mit dem FlatFileItemReader eine csv ausgelesen?
Vielen Dank im Voraus.
Liebe Grüße!
ich bin gerade dabei eine CSV-Datei auszulesen. Und die Werte die ich dort ausgelesen habe, sollen anschließend in eine Excel Datei importiert werden.
Jetzt versuche ich den FlatFileItemReader stand alone zu verwenden (kein Spring batch) um dann anschließend die Zeilen auf der Konsole ausgeben zu lassen.
Code sieht wie folgt aus:
Java:
import org.springframework.batch.item.ExecutionContext;
import org.springframework.batch.item.ParseException;
import org.springframework.batch.item.UnexpectedInputException;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.LineMapper;
import org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper;
import org.springframework.batch.item.file.mapping.DefaultLineMapper;
import org.springframework.batch.item.file.transform.DelimitedLineTokenizer;
import org.springframework.core.io.FileSystemResource;
public class ReadOnly {
public static void main(String[] args) throws UnexpectedInputException, ParseException, Exception {
//ReadOnly read = new ReadOnly();
String file = "H:\\TestCsv\\Test_1.csv";
FlatFileItemReader<EmployeeModel> reader = new FlatFileItemReader<>();
reader.setResource(new FileSystemResource(file));
reader.setLinesToSkip(1);
reader.setLineMapper(lineMapper());
reader.open(new ExecutionContext());
EmployeeModel line = reader.read();
while(line != null) {
line = reader.read();
System.out.println(line);
}
reader.close();
}
private static LineMapper<EmployeeModel> lineMapper() {
DefaultLineMapper<EmployeeModel> defaultLineMapper = new DefaultLineMapper<>();
DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer();
lineTokenizer.setDelimiter(";");
lineTokenizer.setNames(new String[] { "id", "vorname", "nachname" });
BeanWrapperFieldSetMapper<EmployeeModel> fieldSetMapper = new BeanWrapperFieldSetMapper<>();
defaultLineMapper.setLineTokenizer(lineTokenizer);
defaultLineMapper.setFieldSetMapper(fieldSetMapper);
return defaultLineMapper;
}
}
Wenn ichd en Code ausführe tritt folgender Fehler auf:
Code:
Exception in thread "main" org.springframework.batch.item.file.FlatFileParseException: Parsing error at line: 2 in resource=[file [H:\TestCsv\Test_1.csv]], input=[1;alex;mueller]
at org.springframework.batch.item.file.FlatFileItemReader.doRead(FlatFileItemReader.java:189)
at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.read(AbstractItemCountingItemStreamItemReader.java:93)
at lu.haas.burgissmerger.service.ReadOnly.main(ReadOnly.java:27)
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Class.newInstance()" because "this.type" is null
at org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper.getBean(BeanWrapperFieldSetMapper.java:248)
at org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper.mapFieldSet(BeanWrapperFieldSetMapper.java:197)
at org.springframework.batch.item.file.mapping.DefaultLineMapper.mapLine(DefaultLineMapper.java:43)
at org.springframework.batch.item.file.FlatFileItemReader.doRead(FlatFileItemReader.java:185)
... 2 more
Hat hierzu jemand eine Lösung ? Oder hat jemand schon Mal mit dem FlatFileItemReader eine csv ausgelesen?
Vielen Dank im Voraus.
Liebe Grüße!