Код: Выделить всё
public Map readCsv(
MultipartFile customerCsvMultipartFile,
int chunkSize, int lastOffSet, boolean
markReadingCsvProcessComplete ) throws IOException {
List customerCsvData = new ArrayList();
Map migrationCsvMap = new HashMap();
try (InputStreamReader customerCsvReader = new InputStreamReader(customerCsvMultipartFile.getInputStream());)) {
CsvToBean customerCsvToBean = convertInputStreamReaderToCsvBean(CustomerCsvDto.class, customerCsvReader, lastOffSet);
Iterator customerCsvIterator = customerCsvToBean.iterator();
while ((customerCsvIterator.hasNext() && lastOffSet < chunkSize) {
CustomerCsvDto customer = customerCsvIterator.next();
customerCsvData.add(customer);
lastOffSet++;
}
if (!customerCsvIterator.hasNext()) {
markReadingCsvProcessComplete = true;
}
}
migrationCsvMap.put("customerCsvData", customerCsvData);
migrationCsvMap.put("lastOffSet",
Collections.singletonList(lastOffSet));
migrationCsvMap.put("markReadingCsvProcessComplete",
Collections.singletonList(markReadingCsvProcessComplete));
return migrationCsvMap;
}
private CsvToBean convertInputStreamReaderToCsvBean(
Class classToConvert, InputStreamReader
inputStreamReader, int lastOffSet) {
return new CsvToBeanBuilder(inputStreamReader)
.withType(classToConvert)
.withIgnoreLeadingWhiteSpace(true)
.withSkipLines(lastOffSet)
.build();
}
Я пытаюсь пропустить те строки, которые уже прочитаны, но проблема в том, что я повторяю он возвращается первым 500 записей верны, но затем возвращаются все записи с нулевыми значениями.
Я использую @CsvBindByName(column = "column_name") для сопоставления столбцов непосредственно с Dto. код>.
Подробнее здесь: https://stackoverflow.com/questions/791 ... encsv-java
Мобильная версия