I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> 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 with this approach, more sophisticated CSVs (e.g. quoting or including commas as values) will not be parsed as intended.

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, with this approach more sophisticated CSVs will not be parsed as intended.

4. OpenCSV

We can address more complex CSV files with OpenCSV.

OpenCSV is a third party library which 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 – we can check out our OpenCSV tutorial.

5. Conclusion

In this quick tutorial, we explored different ways to read CSV file into an array.

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

I just announced the new Spring Boot 2 material, coming in REST With Spring:

>> CHECK OUT THE LESSONS

Leave a Reply

avatar
  Subscribe  
Notify of