Class CsvReader<T>

java.lang.Object
de.siegmar.fastcsv.reader.CsvReader<T>
Type Parameters:
T - the type of the CSV record.
All Implemented Interfaces:
Closeable, AutoCloseable, Iterable<T>

public final class CsvReader<T> extends Object implements Iterable<T>, 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:

 try (CsvReader<CsvRecord> csv = CsvReader.builder().ofCsvRecord(file)) {
     for (CsvRecord csvRecord : csv) {
         // ...
     }
 }

Example for named records:

 try (CsvReader<NamedCsvRecord> csv = CsvReader.builder().ofNamedCsvRecord(file)) {
     for (NamedCsvRecord csvRecord : csv) {
         // ...
     }
 }
  • Field Details

    • 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 Details

  • Method Details

    • builder

      public static CsvReader.CsvReaderBuilder builder()
      Constructs a CsvReader.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 type CsvRecord.

      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 interface Iterable<T>
      Returns:
      an iterator over the CSV records.
      Throws:
      UncheckedIOException - if an I/O error occurs.
      CsvParseException - if any other problem occurs when parsing the CSV data.
      See Also:
    • spliterator

      public Spliterator<T> spliterator()
      Returns a Spliterator over elements of type CsvRecord.

      The returned spliterator is not thread-safe. Remember to invoke close() when you're done. Alternatively, use stream().
      This method is idempotent and can be called multiple times.

      Specified by:
      spliterator in interface Iterable<T>
      Returns:
      a spliterator over the CSV records.
      Throws:
      UncheckedIOException - if an I/O error occurs.
      CsvParseException - if any other problem occurs when parsing the CSV data.
      See Also:
    • stream

      public Stream<T> stream()
      Returns a new sequential Stream 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:
      UncheckedIOException - if an I/O error occurs.
      CsvParseException - if any other problem occurs when parsing the CSV data.
      See Also:
    • fetchRecord

      private T fetchRecord() throws IOException
      Throws:
      IOException
    • processRecord

      private T processRecord()
    • checkFieldCountConsistency

      private void checkFieldCountConsistency(int fieldCount)
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • fetch

      private T fetch()
    • buildExceptionMessage

      private String buildExceptionMessage()