Skip to content

Basic Tutorial

This section covers the most basic usage of FastCSV. It provides examples for reading and writing CSV data. For more advanced features, see the dedicated Examples section.

Iterative reading of some CSV data from a string

Section titled “Iterative reading of some CSV data from a string”
CsvReader.builder().ofCsvRecord("foo1,bar1\nfoo2,bar2")
.forEach(System.out::println);
try (CsvReader<CsvRecord> csv = CsvReader.builder().ofCsvRecord(file)) {
csv.forEach(System.out::println);
}

Iterative reading of some CSV data with a header

Section titled “Iterative reading of some CSV data with a header”
CsvReader.builder().ofNamedCsvRecord("header 1,header 2\nfield 1,field 2")
.forEach(rec -> System.out.println(rec.getField("header 2")));

Iterative reading of some CSV data with a custom header

Section titled “Iterative reading of some CSV data with a custom header”
NamedCsvRecordHandler callbackHandler = NamedCsvRecordHandler.builder()
.header("header 1", "header 2")
.build();
CsvReader.builder().build(callbackHandler, "field 1,field 2")
.forEach(rec -> System.out.println(rec.getField("header 2")));
CsvReader.builder()
.fieldSeparator(';')
.quoteCharacter('"')
.commentStrategy(CommentStrategy.SKIP)
.commentCharacter('#')
.skipEmptyLines(true)
.ignoreDifferentFieldCount(false)
.acceptCharsAfterQuotes(false)
.detectBomHeader(false)
.maxBufferSize(16777216);
try (IndexedCsvReader<CsvRecord> csv = IndexedCsvReader.builder().ofCsvRecord(file)) {
CsvIndex index = csv.getIndex();
System.out.println("Items of last page:");
int lastPage = index.getPageCount() - 1;
List<CsvRecord> csvRecords = csv.readPage(lastPage);
csvRecords.forEach(System.out::println);
}

Iterative writing of some data to a writer

Section titled “Iterative writing of some data to a writer”
var sw = new StringWriter();
CsvWriter.builder().build(sw)
.writeRecord("header 1", "header 2")
.writeRecord("value 1", "value 2");
System.out.println(sw);
try (CsvWriter csv = CsvWriter.builder().build(file)) {
csv
.writeRecord("header 1", "header 2")
.writeRecord("value 1", "value 2");
}
CsvWriter.builder()
.fieldSeparator(',')
.quoteCharacter('"')
.quoteStrategy(QuoteStrategies.ALWAYS)
.commentCharacter('#')
.lineDelimiter(LineDelimiter.LF);