Releases: osiegmar/FastCSV
Releases · osiegmar/FastCSV
v3.6.0
Added
- Configuration of maximum fields, maximum field size, and maximum record size via record handler
- Fluent configuration for
CsvRecordHandler
,NamedCsvRecordHandler
, andStringArrayHandler
maxBufferSize(int)
inCsvReaderBuilder
andIndexedCsvReaderBuilder
to alter the maximum buffer size of the parser
Changed
- Use ReentrantLock in IndexedCsvReader instead of synchronized to prevent pinning of virtual threads
- More precise error messages when exceeding the maximum field or record size
- More precise error when parsing error occurs within
IndexedCsvReader
- Apply length constraints (maximum field size and maximum record size) after applying field modifiers
Deprecated
- Setting the maximum field size (and maximum buffer size) via system property
fastcsv.max.field.size
- Setting the maximum field count per record via system property
fastcsv.max.field.count
- Constructor initialization of
CsvRecordHandler
,NamedCsvRecordHandler
, andStringArrayHandler
v3.5.0
v3.4.0
v3.3.1
Fixed
- Fixed a bug in CsvReader where lines were mistakenly treated as empty and skipped when skipEmptyLines was set (default). These affected lines made up solely of field separators, solely empty quoted fields, or fields rendered empty after applying optional field modifiers.
v3.3.0
Added
- Implement
Flushable
interface forCsvWriter
to allow flushing the underlying writer - Implement
autoFlush
option forCsvWriter
to automatically flush the writer after writing a record - Implement
toConsole
method forCsvWriter
to write records to the console
v3.2.0
v3.1.0
v3.0.0
Added
IndexedCsvReader
for random access to CSV filesFieldModifier
for modifying fields while reading CSV files- Allow custom quote strategies for CsvWriter
CsvCallbackHandler
for more flexible usage of CsvReader- Support for optional BOM header when reading CSV files
- Method
NamedCsvRecord.findField
for optional field access - Allow READ comment strategy for CSV data with a header
- Metadata for OSGi capability
Changed
- Updated from Java 8 to Java 11
- Updated naming (rows/lines -> records, columns -> fields, differentiate between lines and records)
NamedCsvReader
replaced byCsvReader.builder().ofNamedCsvRecord()
build
methods inCsvReaderBuilder
with callback handlers andofCsvRecord
/ofNamedCsvRecord
as convenience methods- Rename
errorOnDifferentFieldCount()
toignoreDifferentFieldCount()
QuoteStrategy
is now an interface – defaults are provided byQuoteStrategies
- Throw
CsvParseException
instead ofIOException
when maximum field size is exceeded NamedCsvRecord
extendsCsvRecord
and provides more access methods- Raised the maximum field size to 16 MiB to match SUPER data type capabilities of Amazon Redshift
- Limit the maximum field count per record to 16,384 to prevent OutOfMemoryErrors
- Limit the maximum record size to 64 MiB to prevent OutOfMemoryErrors
- Several performance improvements
- Improved documentation and error messages
Removed
- Removed
isEmpty()
inCsvRecord
as it was formerly only used for skipping empty records
Fixed
- Do not throw an exception when reading comments while enabling different field count checking