Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE

1. Overview

Simply put, a CSV (Comma-Separated Values) file contains organized information separated by a comma delimiter.

In this tutorial, we’ll look into different ways to read a CSV file into an array.

2. BufferedReader in java.io

First, we’ll read the records line by line using readLine() in BufferedReader.

Then we’ll split the line into tokens based on the comma delimiter:

List<List<String>> records = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader("book.csv"))) {
    String line;
    while ((line = br.readLine()) != null) {
        String[] values = line.split(COMMA_DELIMITER);
        records.add(Arrays.asList(values));
    }
}

Note that more sophisticated CSVs (e.g., quoting or including commas as values) will not be parsed as intended with this approach.

3. Scanner in java.util

Next, we’re going to use a java.util.Scanner to run through the contents of the file and retrieve lines serially, one by one:

List<List<String>> records = new ArrayList<>();
try (Scanner scanner = new Scanner(new File("book.csv"))) {
    while (scanner.hasNextLine()) {
        records.add(getRecordFromLine(scanner.nextLine()));
    }
}

Then we will parse the lines and store it into an array:

private List<String> getRecordFromLine(String line) {
    List<String> values = new ArrayList<String>();
    try (Scanner rowScanner = new Scanner(line)) {
        rowScanner.useDelimiter(COMMA_DELIMITER);
        while (rowScanner.hasNext()) {
            values.add(rowScanner.next());
        }
    }
    return values;
}

Like before, more sophisticated CSVs will not be parsed as intended with this approach.

4. OpenCSV

We can address more complex CSV files with OpenCSV.

OpenCSV is a third-party library that provides an API to work with CSV files.

We’ll use readNext() method in CSVReader to read the records in the file:

List<List<String>> records = new ArrayList<List<String>>();
try (CSVReader csvReader = new CSVReader(new FileReader("book.csv"));) {
    String[] values = null;
    while ((values = csvReader.readNext()) != null) {
        records.add(Arrays.asList(values));
    }
}

To dig deeper and learn more about OpenCSV, check out our OpenCSV tutorial.

5. Conclusion

In this quick article, we explored different ways to read CSV files into an array.

As always, the full source code of the examples is available over on GitHub.

Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE
res – REST with Spring (eBook) (everywhere)
Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.