• Java
    • JAXB Tutorial
      • What is JAXB
      • JAXB Marshalling Example
      • JAXB UnMarshalling Example
  • Spring Tutorial
    • Spring Core Tutorial
    • Spring MVC Tutorial
      • Quick Start
        • Flow Diagram
        • Hello World Example
        • Form Handling Example
      • Handler Mapping
        • BeanNameUrlHandlerMapping
        • ControllerClassNameHandlerMapping
        • SimpleUrlHandlerMapping
      • Validation & Exception Handling
        • Validation+Annotations
        • Validation+ResourceBundle
        • @ExceptionHandler
        • @ControllerAdvice
        • Custom Exception Handling
      • Form Tag Library
        • Textbox Example
        • TextArea Example
        • Password Example
        • Dropdown Box Example
        • Checkboxes Example
        • Radiobuttons Example
        • HiddenValue Example
      • Misc
        • Change Config file name
    • Spring Boot Tutorial
  • Hibernate Tutorial
  • REST Tutorial
    • JAX-RS REST @PathParam Example
    • JAX-RS REST @QueryParam Example
    • JAX-RS REST @DefaultValue Example
    • JAX-RS REST @Context Example
    • JAX-RS REST @MatrixParam Example
    • JAX-RS REST @FormParam Example
    • JAX-RS REST @Produces Example
    • JAX-RS REST @Consumes Example
    • JAX-RS REST @Produces both XML and JSON Example
    • JAX-RS REST @Consumes both XML and JSON Example
  • Miscellaneous
    • JSON Parser
      • Read a JSON file
      • Write JSON object to File
      • Read / Write JSON using GSON
      • Java Object to JSON using JAXB
    • CSV Parser
      • Read / Write CSV file
      • Read/Parse/Write CSV File – OpenCSV
      • Export data into a CSV File
      • CsvToBean and BeanToCsv – OpenCSV

JavaInterviewPoint

Java Development Tutorials

How to read and parse CSV file in Java

January 18, 2016 by javainterviewpoint 1 Comment

CSV stands for Comma Seperated Values. A CSV file is used for data storage, it looks like a normal text file containing organised information seperated by a delimiter Comma. There are many ways of Reading and Parsing a CSV file, in this example we will look into the below three methods

  1. Using BufferedReader and String.split()
  2. Using Scanner of Java Util package
  3. Using 3rd party library like OpenCSV


We will be reading the Employee.csv

EmployeeID,FirstName,LastName,Salary
1,FirstName1,LastName1,10000
2,FirstName2,LastName2,20000
3,FirstName3,LastName3,30000
4,FirstName4,LastName4,40000
5,FirstName5,LastName5,50000

Employee.java

Before getting into parsing stuff, we have a pojo called Employee to hold Employee details such as EmpId, FirstName, LastName, Salary.

package com.javainterviewpoint;

public class Employee 
{
    private int empId;
    private String firstName;
    private String lastName;
    private int salary;
    
    public Employee(int empId, String firstName, 
                     String lastName, int salary) {
        super();
        this.empId = empId;
        this.firstName = firstName;
        this.lastName = lastName;
        this.salary = salary;
    }
    
    public int getEmpId() {
        return empId;
    }
    public void setEmpId(int empId) {
        this.empId = empId;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Employee [empId=" + empId + ", firstName=" + firstName
                + ", lastName=" + lastName + ", salary=" + salary + "]";
    }
}

1. Using Buffered Reader and String.split()

BufferedReader we will read the CSV file and String.split() method will split the string into token based on the delimiter passed which is COMMA here

package com.javainterviewpoint;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ReadCSVFile_BufferedReader 
{
	//Delimiters used in the CSV file
    private static final String COMMA_DELIMITER = ",";
    
    public static void main(String args[])
    {
        BufferedReader br = null;
        try
        {
            //Reading the csv file
            br = new BufferedReader(new FileReader("Employee.csv"));
            
            //Create List for holding Employee objects
            List<Employee> empList = new ArrayList<Employee>();
            
            String line = "";
            //Read to skip the header
            br.readLine();
            //Reading from the second line
            while ((line = br.readLine()) != null) 
            {
                String[] employeeDetails = line.split(COMMA_DELIMITER);
                
                if(employeeDetails.length > 0 )
                {
                    //Save the employee details in Employee object
                    Employee emp = new Employee(Integer.parseInt(employeeDetails[0]),
                            employeeDetails[1],employeeDetails[2],
                            Integer.parseInt(employeeDetails[3]));
                    empList.add(emp);
                }
            }
            
            //Lets print the Employee List
            for(Employee e : empList)
            {
                System.out.println(e.getEmpId()+"   "+e.getFirstName()+"   "
                		+e.getLastName()+"   "+e.getSalary());
            }
        }
        catch(Exception ee)
        {
            ee.printStackTrace();
        }
        finally
        {
            try
            {
                br.close();
            }
            catch(IOException ie)
            {
                System.out.println("Error occured while closing the BufferedReader");
                ie.printStackTrace();
            }
        }
    }
}

Output :

1   FirstName1   LastName1   10000
2   FirstName2   LastName2   20000
3   FirstName3   LastName3   30000
4   FirstName4   LastName4   40000
5   FirstName5   LastName5   50000

2. Using Scanner of Java Util package

Scanner breaks the input into tokens based on the delimiter passed(Default is White Space), here we are using COMMA as delimieter.

package com.javainterviewpoint;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadCSV_Scanner 
{
	//Delimiters used in the CSV file
	private static final String COMMA_DELIMITER = ",";
	
	public static void main(String args[])
	{
		 
		Scanner scanner = null;
		try {
			//Get the scanner instance
			scanner = new Scanner(new File("Employee.csv"));
			//Use Delimiter as COMMA
			scanner.useDelimiter(COMMA_DELIMITER);
			while(scanner.hasNext())
			{
					System.out.print(scanner.next()+"   ");
			}
		} 
		catch (FileNotFoundException fe) 
		{
			fe.printStackTrace();
		}
		finally
		{
			scanner.close();
		}
	}
}

Output :

EmployeeID   FirstName   LastName   Salary
1   FirstName1   LastName1   10000
2   FirstName2   LastName2   20000
3   FirstName3   LastName3   30000
4   FirstName4   LastName4   40000
5   FirstName5   LastName5   50000

3. Using OpenCSV

OpenCSV is a Third party library, it gives better handliling to parse a CSV file.

package com.javainterviewpoint;

import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import au.com.bytecode.opencsv.CSVReader;

public class ReadCSV_OpenCSV 
{
    public static void main(String args[])
    {
        CSVReader csvReader = null;
        
        try
        {
            /**
             * Reading the CSV File
             * Delimiter is comma
             * Start reading from line 1
             */
            csvReader = new CSVReader(new FileReader("Employee.csv"),',','"',1);
            //employeeDetails stores the values current line
            String[] employeeDetails = null;
            //Create List for holding Employee objects
            List<Employee> empList = new ArrayList<Employee>();
            
            while((employeeDetails = csvReader.readNext())!=null)
            {
              //Save the employee details in Employee object
                Employee emp = new Employee(Integer.parseInt(employeeDetails[0]),
                        employeeDetails[1],employeeDetails[2],
                        Integer.parseInt(employeeDetails[3]));
                empList.add(emp);
            }
        
        //Lets print the Employee List
        for(Employee e : empList)
        {
            System.out.println(e.getEmpId()+"   "+e.getFirstName()+"   "
                    +e.getLastName()+"   "+e.getSalary());
        }
        }
        catch(Exception ee)
        {
            ee.printStackTrace();
        }
    }
}

Output :

1   FirstName1   LastName1   10000
2   FirstName2   LastName2   20000
3   FirstName3   LastName3   30000
4   FirstName4   LastName4   40000
5   FirstName5   LastName5   50000

Other interesting articles which you may like …

  • How to Export data into a CSV File
  • How to Read/Parse/Write CSV File using OpenCSV
  • CsvToBean and BeanToCsv Example – Using OpenCSV
  • How to Read Excel File in Java using POI
  • How to Write Excel File in Java using POI
  • JAXB Tutorial – What is JAXB
  • JAXB Marshalling Example – Convert Java Object to XML in Java
  • JAXB UnMarshalling Example – Convert XML to Java Object
  • How to Convert Java Object to JSON using JAXB

Filed Under: Core Java, Java Tagged With: BufferedReader, CSV, OpenCSV, Parse, parse CSV, read csv, Scanner

Comments

  1. priya says

    July 28, 2018 at 10:10 am

    DataInputStream consumes less amount of memory space being it is binary stream, where as BufferedReader consumes more memory space being it is character stream. Many thanks for sharing.

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Java Basics

  • JVM Architecture
  • Object in Java
  • Class in Java
  • How to Set Classpath for Java in Windows
  • Components of JDK
  • Decompiling a class file
  • Use of Class.forName in java
  • Use Class.forName in SQL JDBC

Oops Concepts

  • Inheritance in Java
  • Types of Inheritance in Java
  • Single Inheritance in Java
  • Multiple Inheritance in Java
  • Multilevel Inheritance in Java
  • Hierarchical Inheritance in Java
  • Hybrid Inheritance in Java
  • Polymorphism in Java – Method Overloading and Overriding
  • Types of Polymorphism in java
  • Method Overriding in Java
  • Can we Overload static methods in Java
  • Can we Override static methods in Java
  • Java Constructor Overloading
  • Java Method Overloading Example
  • Encapsulation in Java with Example
  • Constructor in Java
  • Constructor in an Interface?
  • Parameterized Constructor in Java
  • Constructor Chaining with example
  • What is the use of a Private Constructors in Java
  • Interface in Java
  • What is Marker Interface
  • Abstract Class in Java

Java Keywords

  • Java this keyword
  • Java super keyword
  • Final Keyword in Java
  • static Keyword in Java
  • Static Import
  • Transient Keyword

Miscellaneous

  • newInstance() method
  • How does Hashmap works internally in Java
  • Java Ternary operator
  • How System.out.println() really work?
  • Autoboxing and Unboxing Examples
  • Serialization and Deserialization in Java with Example
  • Generate SerialVersionUID in Java
  • How to make a class Immutable in Java
  • Differences betwen HashMap and Hashtable
  • Difference between Enumeration and Iterator ?
  • Difference between fail-fast and fail-safe Iterator
  • Difference Between Interface and Abstract Class in Java
  • Difference between equals() and ==
  • Sort Objects in a ArrayList using Java Comparable Interface
  • Sort Objects in a ArrayList using Java Comparator

Follow

  • Coding Utils

Useful Links

  • Spring 4.1.x Documentation
  • Spring 3.2.x Documentation
  • Spring 2.5.x Documentation
  • Java 6 API
  • Java 7 API
  • Java 8 API
  • Java EE 5 Tutorial
  • Java EE 6 Tutorial
  • Java EE 7 Tutorial
  • Maven Repository
  • Hibernate ORM

About JavaInterviewPoint

javainterviewpoint.com is a tech blog dedicated to all Java/J2EE developers and Web Developers. We publish useful tutorials on Java, J2EE and all latest frameworks.

All examples and tutorials posted here are very well tested in our development environment.

Connect with us on Facebook | Privacy Policy | Sitemap

Copyright ©2023 · Java Interview Point - All Rights Are Reserved ·