- java.lang.Object
-
- de.siegmar.fastcsv.reader.CsvReader<T>
-
- Type Parameters:
T
- the type of the CSV record.
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,java.lang.Iterable<T>
public final class CsvReader<T> extends java.lang.Object implements java.lang.Iterable<T>, java.io.Closeable
This is the main class for reading CSV data.The CSV records are read iteratively, regardless of whether the Iterable, the Iterator, or the Stream is used. Once all records are read, the data is consumed. If you need to repeatedly read records, you should collect the records in a List or another collection.
Example use:
Example for named records:
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CsvReader.CsvReaderBuilder
This builder is used to create configured instances ofCsvReader
.private class
CsvReader.CsvRecordIterator
private class
CsvReader.CsvSpliterator
-
Field Summary
Fields Modifier and Type Field Description private CsvCallbackHandler<T>
callbackHandler
private CommentStrategy
commentStrategy
private CsvParser
csvParser
private CloseableIterator<T>
csvRecordIterator
private int
firstRecordFieldCount
private boolean
ignoreDifferentFieldCount
private boolean
skipEmptyLines
-
Constructor Summary
Constructors Constructor Description CsvReader(CsvParser csvParser, CsvCallbackHandler<T> callbackHandler, CommentStrategy commentStrategy, boolean skipEmptyLines, boolean ignoreDifferentFieldCount)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static CsvReader.CsvReaderBuilder
builder()
Constructs aCsvReader.CsvReaderBuilder
to configure and build instances of this class.private java.lang.String
buildExceptionMessage()
private void
checkFieldCountConsistency(int fieldCount)
void
close()
private T
fetch()
private T
fetchRecord()
CloseableIterator<T>
iterator()
Returns an iterator over elements of typeCsvRecord
.private T
processRecord()
java.util.Spliterator<T>
spliterator()
Returns aSpliterator
over elements of typeCsvRecord
.java.util.stream.Stream<T>
stream()
Returns a new sequentialStream
with this reader as its source.java.lang.String
toString()
-
-
-
Field Detail
-
csvParser
private final CsvParser csvParser
-
callbackHandler
private final CsvCallbackHandler<T> callbackHandler
-
commentStrategy
private final CommentStrategy commentStrategy
-
skipEmptyLines
private final boolean skipEmptyLines
-
ignoreDifferentFieldCount
private final boolean ignoreDifferentFieldCount
-
csvRecordIterator
private final CloseableIterator<T> csvRecordIterator
-
firstRecordFieldCount
private int firstRecordFieldCount
-
-
Constructor Detail
-
CsvReader
CsvReader(CsvParser csvParser, CsvCallbackHandler<T> callbackHandler, CommentStrategy commentStrategy, boolean skipEmptyLines, boolean ignoreDifferentFieldCount)
-
-
Method Detail
-
builder
public static CsvReader.CsvReaderBuilder builder()
Constructs aCsvReader.CsvReaderBuilder
to configure and build instances of this class.- Returns:
- a new
CsvReader.CsvReaderBuilder
instance.
-
iterator
public CloseableIterator<T> iterator()
Returns an iterator over elements of typeCsvRecord
.The returned iterator is not thread-safe. Remember to close the returned iterator when you're done. Alternatively, use
stream()
.
This method is idempotent and can be called multiple times.- Specified by:
iterator
in interfacejava.lang.Iterable<T>
- Returns:
- an iterator over the CSV records.
- Throws:
java.io.UncheckedIOException
- if an I/O error occurs.CsvParseException
- if any other problem occurs when parsing the CSV data.- See Also:
stream()
-
spliterator
public java.util.Spliterator<T> spliterator()
Returns aSpliterator
over elements of typeCsvRecord
.The returned spliterator is not thread-safe. Remember to invoke
close()
when you're done. Alternatively, usestream()
.
This method is idempotent and can be called multiple times.- Specified by:
spliterator
in interfacejava.lang.Iterable<T>
- Returns:
- a spliterator over the CSV records.
- Throws:
java.io.UncheckedIOException
- if an I/O error occurs.CsvParseException
- if any other problem occurs when parsing the CSV data.- See Also:
stream()
-
stream
public java.util.stream.Stream<T> stream()
Returns a new sequentialStream
with this reader as its source.The returned stream is not thread-safe. Remember to close the returned stream when you're done. Closing the stream will also close this reader.
This method can be called multiple times, although it creates a new stream each time.
The stream is not reusable after it has been closed.- Returns:
- a sequential
Stream
over the CSV records. - Throws:
java.io.UncheckedIOException
- if an I/O error occurs.CsvParseException
- if any other problem occurs when parsing the CSV data.- See Also:
iterator()
-
fetchRecord
private T fetchRecord() throws java.io.IOException
- Throws:
java.io.IOException
-
processRecord
private T processRecord()
-
checkFieldCountConsistency
private void checkFieldCountConsistency(int fieldCount)
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Throws:
java.io.IOException
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
fetch
private T fetch()
-
buildExceptionMessage
private java.lang.String buildExceptionMessage()
-
-