Como manipular arquivos CSV em Java?
O CSV (Comma-Separated Values) é um formato popular para armazenar e transferir dados estruturados. Em Java, podemos manipular arquivos CSV usando FileReader, BufferedReader ou bibliotecas como OpenCSV.
1. Lendo Arquivos CSV com BufferedReader
Podemos ler um arquivo CSV linha por linha e dividir os valores usando split(",")
.
import java.io.*;
public class LerCSV {
public static void main(String[] args) {
String arquivo = "dados.csv";
try (BufferedReader br = new BufferedReader(new FileReader(arquivo))) {
String linha;
while ((linha = br.readLine()) != null) {
String[] dados = linha.split(",");
System.out.println("Nome: " + dados[0] + ", Idade: " + dados[1]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Exemplo de dados.csv
:
João,30
Maria,25
Carlos,40
Saída esperada:
Nome: João, Idade: 30
Nome: Maria, Idade: 25
Nome: Carlos, Idade: 40
2. Escrevendo um Arquivo CSV com BufferedWriter
Para criar um arquivo CSV e adicionar conteúdo:
import java.io.*;
public class EscreverCSV {
public static void main(String[] args) {
String arquivo = "saida.csv";
try (BufferedWriter bw = new BufferedWriter(new FileWriter(arquivo))) {
bw.write("Nome,Idade\n");
bw.write("João,30\n");
bw.write("Maria,25\n");
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. Usando a Biblioteca OpenCSV para Manipulação Avançada
A OpenCSV facilita a leitura e escrita de CSV com recursos adicionais.
3.1. Adicionando a Dependência (Maven)
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.5.2</version>
</dependency>
3.2. Lendo um Arquivo CSV com OpenCSV
import com.opencsv.CSVReader;
import java.io.*;
import java.util.List;
public class LerCSVOpenCSV {
public static void main(String[] args) {
try (CSVReader reader = new CSVReader(new FileReader("dados.csv"))) {
List<String[]> linhas = reader.readAll();
for (String[] linha : linhas) {
System.out.println("Nome: " + linha[0] + ", Idade: " + linha[1]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.3. Escrevendo um Arquivo CSV com OpenCSV
import com.opencsv.CSVWriter;
import java.io.*;
public class EscreverCSVOpenCSV {
public static void main(String[] args) {
try (CSVWriter writer = new CSVWriter(new FileWriter("saida.csv"))) {
String[] cabecalho = {"Nome", "Idade"};
String[] pessoa1 = {"João", "30"};
String[] pessoa2 = {"Maria", "25"};
writer.writeNext(cabecalho);
writer.writeNext(pessoa1);
writer.writeNext(pessoa2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
4. Comparação entre Métodos
Método | Vantagens |
---|---|
BufferedReader |
Simples e rápido para leitura básica |
BufferedWriter |
Fácil para escrita manual de CSV |
OpenCSV |
Melhor para manipulação avançada de CSV |
Conclusão
A manipulação de arquivos CSV em Java pode ser feita de várias formas. Para tarefas simples, BufferedReader
e BufferedWriter
são eficientes. Para manipulação mais avançada, OpenCSV é altamente recomendada.
Por que os arquivos CSV são tão utilizados para armazenamento e troca de dados?
Os arquivos CSV são amplamente usados para armazenar e trocar dados tabulares em aplicações empresariais. Muitos sistemas exportam e importam dados em CSV para integração com planilhas e bancos de dados. Aprender a manipular arquivos CSV em Java permite automatizar processos e lidar eficientemente com grandes volumes de dados.
Algumas aplicações:
- Exportação de relatórios e tabelas
- Integração com planilhas como Excel
- Importação e exportação de dados em sistemas
- Armazenamento simples de grandes volumes de dados
Dicas para quem está começando
- Use
BufferedReader
para leitura básica de CSV - Prefira
OpenCSV
para manipulação avançada - Evite modificar arquivos CSV sem backup
- Trate exceções ao lidar com arquivos para evitar erros
- Teste a compatibilidade do CSV gerado com outros sistemas
Contribuições de Rodrigo Farias