Mam problem z parsowaniem duzego pliku z CSV do XLSX. O ile nie mam problemy z plikem testowy ( który jest okrojoną wersją ) to z pełnym tak.
Line 142 => for (CSVRecord csvRecord : csvParser) in this method
public LinkedHashMap<String, LinkedHashMap<String, List<CSVRecord>>> processInputCSV(Path path) throws IOException {
LinkedHashMap<String, LinkedHashMap<String, List<CSVRecord>>> map = new LinkedHashMap<>();
try (
Reader reader = Files.newBufferedReader(path);
CSVParser csvParser = new CSVParser(reader, CSVFormat.EXCEL)
) {
logger.info("Preparation of a file whitout data aggregation");
for (CSVRecord csvRecord : csvParser) {
String resource = csvRecord.get(0);
String order = csvRecord.get(10);
LinkedHashMap<String, List<CSVRecord>> inner = map.getOrDefault(resource, new LinkedHashMap<>());
List<CSVRecord> entries = inner.getOrDefault(order, new ArrayList<>());
entries.add(csvRecord);
inner.put(order, entries);
map.put(resource, inner);
}
} catch (IOException e) {
e.printStackTrace();
throw e;
}
return map;
}
Dostaje taki błąd
Exception in thread "main" java.lang.IllegalStateException: MalformedInputException reading next record: java.nio.charset.MalformedInputException: Input length = 1
at org.apache.commons.csv.CSVParser$CSVRecordIterator.getNextRecord(CSVParser.java:145)
at org.apache.commons.csv.CSVParser$CSVRecordIterator.hasNext(CSVParser.java:155)
at com.test.converter.CsvConverter.processInputCSV(CsvConverter.java:142)
at com.test.converter.CsvConverter.main(CsvConverter.java:229)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
Caused by: java.nio.charset.MalformedInputException: Input length = 1
at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:274)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:181)
at java.base/java.io.BufferedReader.read1(BufferedReader.java:210)
at java.base/java.io.BufferedReader.read(BufferedReader.java:287)
at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.base/java.io.BufferedReader.read(BufferedReader.java:182)
at org.apache.commons.csv.ExtendedBufferedReader.read(ExtendedBufferedReader.java:58)
at org.apache.commons.csv.Lexer.nextToken(Lexer.java:95)
at org.apache.commons.csv.CSVParser.nextRecord(CSVParser.java:674)
at org.apache.commons.csv.CSVParser$CSVRecordIterator.getNextRecord(CSVParser.java:142)
... 3 more