Analisar CSV em Java

  1. Parse CSV utilizando o Scanner em Java
  2. CSV Parse utilizando String.split() em Java
  3. Analisar CSV usando OpenCSV em Java

Iremos abordar o tema da análise de um CSV em Java. Analisaremos os vários métodos para fazer a análise de Java CSV da amostra de CSV em Java.

Amostra de Java CSV

Parse CSV utilizando o Scanner em Java

A primeira e mais clássica forma de analisar um ficheiro CSV é utilizando a classe Scanner de Java. No exemplo, obtemos o ficheiro utilizando File e depois lêmo-lo por Scanner.

O mais importante a notar neste exemplo é que temos de conhecer o separador utilizado no CSV. Utilizamos a vírgula no CSV original como separador; é por isso que podemos especificar , como um delimitador no código.

import java.io.*;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws FileNotFoundException {

        File getCSVFiles = new File("/test/example.csv");
        Scanner sc = new Scanner(getCSVFiles);
        sc.useDelimiter(",");
        while (sc.hasNext())
        {
            System.out.print(sc.next() + " | ");
        }
        sc.close();  
    }
}

Resultado:

Id | UserName | Age | Job
1 | John Doe | 24 | Developer
2 | Alex Johnson | 43 | Project Manager
3 | Mike Stuart | 26 | Designer
4 | Tom Sean | 31 | CEO | 

CSV Parse utilizando String.split() em Java

No exemplo seguinte, utilizamos um método split() que funciona com a classe String. Podemos utilizar o BufferedReader para ler o ficheiro CSV e fazer loop através dele lendo cada linha até chegar a null.

import java.io.*;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws FileNotFoundException {

        String line = "";
        final String delimiter = ",";
        try
        {
            String filePath = "/test/example.csv";
            FileReader fileReader = new FileReader(filePath);

            BufferedReader reader = new BufferedReader(fileReader);
            while ((line = reader.readLine()) != null)   //loops through every line until null found
            {
               String[] token = line.split(delimiter);    // separate every token by comma
             System.out.println(token[0] + " | "+ token[1]+ " | "+ token[2]+ " | "+ token[3]);
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

    }
}

Resultado:

Id | UserName | Age | Job
1 | John Doe | 24 | Developer
2 | Alex Johnson | 43 | Project Manager
3 | Mike Stuart | 26 | Designer
4 | Tom Sean | 31 | CEO

Analisar CSV usando OpenCSV em Java

Várias bibliotecas podem ajudar-nos a analisar o CSV em Java. Uma delas é OpenCSV. No exemplo abaixo, CSVReader() pega num fileReader com o ficheiro CSV e depois devolve um array de strings.

import com.opencsv.CSVReader;

import java.io.*;
import java.util.List;
import java.util.Scanner;
import java.util.Vector;

public class Main {
    public static void main(String[] args) throws Exception {      
        try {

            String filePath = "/test/example.csv";
            FileReader fileReader = new FileReader(filePath);

            CSVReader openCSVReader = new CSVReader(fileReader);
            String[] record;

            while((record = openCSVReader.readNext()) != null){

                for(String token: record){
                    System.out.print(token + "\t");
                }
                System.out.println();
            }

            

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Resultado:

Id	UserName	Age	Job	
1	John Doe	24	Developer	
2	Alex Johnson	43	Project Manager	
3	Mike Stuart	26	Designer	
4	Tom Sean	31	CEO