How to Parse a CSV file in Java

A CSV file is a simple text file used to store tabular data. Each line is a record of data and consists of fields separated by commas. The main advantage of CSV file format is that it is portable and human readable. Files using proprietary formats such as Microsoft excel files can be exported to CSV files for portability. The following Java program parses simple CSV files,

import java.util.Arrays;

// Sample Java program to read simple CSV files
public class SimpleCSVReader {

    public static void main(String[] args) throws Exception {
        // Replace FileReader parameter with the actual path
        BufferedReader reader = new BufferedReader(new FileReader("input.csv"));
        String line;
        while ((line=reader.readLine()) != null) {
            String[] fields = line.split(",");
            // Print the columns in array form


Sometimes the fields in the CSV file may contain commas. In order to distinguish commas in data fields from field separators, the fields are usually surrounded by quotes. The above program won't work with such complex CSV files. The following Java program shows how the Apache Commons CSV library can be used to parse such complex CSV files.

You can download Apache Commons CSV library from here. Extract the zip file and then ensure that the jar file commons-csv-1.4.jar is in the classpath. For example, you can use the following commands to compile and run the program if the jar file is present in the same folder containing the Java file Note that the commands are slightly different depending on your operating system.

To compile in linux/mac,

javac -cp "commons-csv-1.4.jar:."

To compile in Windows,

javac -cp "commons-csv-1.4.jar;."

To run in linux/mac,

java -cp "commons-csv-1.4.jar:." ApacheCSVReader

To run in Windows,

java -cp "commons-csv-1.4.jar;." ApacheCSVReader

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;

// Java program to parse CSV files using Apache CSV Reader
// Can read CSV files with commas in quoted fields
public class ApacheCSVReader {

    public static void main(String[] args) throws Exception {
        FileReader in = new FileReader("input.csv");
        Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
        for (CSVRecord record : records) {
            for (String s : record) {
                System.out.print(s + "|");

To test the above program, you can use the following sample CSV file (input.csv). Ensure that it is saved in the same folder where Java class files are stored.

India,Sri Lanka, Nepal
"Hi, There","Another message","Greeting"
200, 400,600