Trabalho com CSV em Java: guia completo de leitura e escrita

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com CSV em Java: guia completo

CSV (Comma-Separated Values) — um dos formatos mais populares para armazenar e trocar dados tabulares. Em Java, existem várias formas de trabalhar com arquivos CSV: desde parsing manual até o uso de bibliotecas especializadas. Neste artigo, abordaremos as principais abordagens, incluindo ferramentas padrão do Java e bibliotecas de terceiros populares.



1. Abordagem padrão: leitura manual de CSV

Para projetos simples, é possível dispensar bibliotecas de terceiros. Usamos BufferedReader e String.split():



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

public class SimpleCSVReader { public static List<String[]> readCSV(String filePath) { List<String[]> rows = new ArrayList<>(); String line; try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { while ((line = br.readLine()) != null) { String[] values = line.split(","); rows.add(values); } } catch (IOException e) { e.printStackTrace(); } return rows; } public static void main(String[] args) { List<String[]> data = readCSV("data.csv"); for (String[] row : data) { System.out.println(String.join(" | ", row)); } }}


Desvantagens: não trata aspas, escape de vírgulas dentro de campos, quebras de linha. Para produção, é melhor usar bibliotecas.



2. OpenCSV — biblioteca poderosa e simples

OpenCSV — uma das bibliotecas mais populares para trabalhar com CSV em Java. Ela resolve todos os problemas de parsing: aspas, escape, diferentes delimitadores.



Instalação (Maven):

<dependency>    <groupId>com.opencsv</groupId>    <artifactId>opencsv</artifactId>    <version>5.9</version></dependency>


Leitura de CSV com OpenCSV:

import com.opencsv.CSVReader;import com.opencsv.exceptions.CsvValidationException;import java.io.FileReader;import java.io.IOException;

public class OpenCSVReader { public static void main(String[] args) { try (CSVReader reader = new CSVReader(new FileReader("data.csv"))) { String[] nextLine; while ((nextLine = reader.readNext()) != null) { System.out.println(String.join(" | ", nextLine)); } } catch (IOException | CsvValidationException e) { e.printStackTrace(); } }}


Escrita de CSV com OpenCSV:

import com.opencsv.CSVWriter;import java.io.FileWriter;import java.io.IOException;

public class OpenCSVWriter { public static void main(String[] args) { String[] header = {"Name", "Age", "Email"}; String[] row1 = {"Alice", "30", "alice@example.com"}; String[] row2 = {"Bob", "25", "bob@example.com"}; try (CSVWriter writer = new CSVWriter(new FileWriter("output.csv"))) { writer.writeNext(header); writer.writeNext(row1); writer.writeNext(row2); } catch (IOException e) { e.printStackTrace(); } }}


3. Apache Commons CSV — flexibilidade e desempenho

Apache Commons CSV — outra biblioteca poderosa com suporte a diferentes formatos (CSV, TSV, Excel).



Instalação (Maven):

<dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-csv</artifactId>    <ver                    

Recommendations