This document only describes the breaking changes. For a full list of changes, including new features, see the changelog.
- The minimum Java version is now 11 (compared to 8 in earlier versions)
- This also raised the required Android API level from version 26 (Android 8) to 33 (Android 13)
- The maximum number of fields per record is now limited to 16,384 to avoid
OutOfMemoryErrors
caused by excessive field counts. - The maximum record size is now limited to (64 MiB) to prevent
OutOfMemoryErrors
.
Reading CSV records:
try (CsvReader<CsvRecord> csv = CsvReader.builder().ofCsvRecord(file)) {
csv.forEach(System.out::println);
}
Write CSV records:
try (CsvWriter csv = CsvWriter.builder().build(file)) {
csv
.writeRecord("header1", "header2")
.writeRecord("value1", "value2");
}
- In
CsvReaderBuilder
:skipEmptyRows
is nowskipEmptyLines
errorOnDifferentFieldCount
is nowignoreDifferentFieldCount
(opposite meaning!)build
methods with callback handlers andofCsvRecord
/ofNamedCsvRecord
as convenience methods
- In
CsvRecord
(formerCsvRow
):getOriginalLineNumber
is nowgetStartingLineNumber
A distinct NamedCsvReader
is no longer needed as the CsvReader
now supports callbacks for header and record
processing.
CsvReader.builder().ofNamedCsvRecord("header 1,header 2\nfield 1,field 2")
.forEach(rec -> System.out.println(rec.getField("header2")));
or with a custom header:
CsvCallbackHandler<NamedCsvRecord> callbackHandler =
new NamedCsvRecordHandler("header1", "header2");
CsvReader.builder().build(callbackHandler, "field 1,field 2")
.forEach(rec -> System.out.println(rec.getField("header2")));
QuoteStrategy
changed from an enum to an interface (seeQuoteStrategies
for the default implementations)- The
REQUIRED
quote strategy is removed as it is the default (no quote strategy is needed)
Example to enable always quoting:
CsvWriter.builder()
.quoteStrategy(QuoteStrategies.ALWAYS);
MalformedCsvException
is now CsvParseException
and is thrown instead of IOException
for non-IO related errors.
See the https://github.com/osiegmar/FastCSV/tree/main/example/src/main/java/example for more examples.
If you're still on version 1, see https://github.com/osiegmar/FastCSV/blob/v2.2.2/UPGRADING.md