Trabajo con CSV en Java: bibliotecas OpenCSV, Apache Commons CSV y Java Scanner

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con CSV en Java: resumen de bibliotecas y ejemplos



CSV (Valores Separados por Comas) es uno de los formatos más comunes para el intercambio de datos tabulares. A pesar de su aparente simplicidad, el análisis sintáctico manual de CSV en Java puede provocar errores debido al escape de comillas, comas anidadas y diferentes codificaciones. En este artículo, analizaremos tres enfoques principales: el uso de OpenCSV, Apache Commons CSV y el estándar java.util.Scanner.



1. OpenCSV — biblioteca flexible y popular



OpenCSV es una biblioteca ligera de código abierto que admite la lectura y escritura de CSV, TSV y otros delimitadores. Maneja automáticamente el escape, las comillas y los campos multilínea.



Inclusión (Maven)

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


Ejemplo: lectura de CSV a una lista de objetos

import com.opencsv.CSVReader;import com.opencsv.bean.CsvToBean;import com.opencsv.bean.HeaderColumnNameMappingStrategy;import java.io.FileReader;import java.util.List;

public class OpenCSVExample { public static void main(String[] args) throws Exception { try (FileReader reader = new FileReader("users.csv")) { // Análisis sintáctico manual CSVReader csvReader = new CSVReader(reader); String[] line; while ((line = csvReader.readNext()) != null) { System.out.println("Name: " + line[0] + ", Email: " + line[1]); } } }}


Ejemplo: mapeo a Java Bean

public class User {    private String name;    private String email;    // getters y setters}

// Lectura con mapeotry (FileReader reader = new FileReader("users.csv")) { HeaderColumnNameMappingStrategy<User> strategy = new HeaderColumnNameMappingStrategy<>(); strategy.setType(User.class);

CsvToBean<User> csvToBean = new CsvToBeanBuilder<User>(reader) .withMappingStrategy(strategy) .build();

List<User> users = csvToBean.parse();}


2. Apache Commons CSV — estándar de Apache



Apache Commons CSV es parte del ecosistema Apache Commons. Proporciona formatos predefinidos (RFC 4180, Excel, MySQL) y procesamiento en flujo.



Inclusión (Maven)

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


Ejemplo: lectura con encabezados

import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVParser;import org.apache.commons.csv.CSVRecord;import java.io.FileReader;import java.io.Reader;

public class CommonsCSVExample { public static void main(String[] args) throws Exception { try (Reader reader = new FileReader("data.csv"); CSVParser parser = CSVFormat.DEFAULT .withFirstRecordAsHeader() .parse(reader)) {

for (CSVRecord record : parser) { String id = record.get("ID"); String value = record.get("Value"); System.out.println(id + " -> " + value); } } }}


Escritura de CSV

import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVPrinter;import java.io.FileWriter;import java.io.Writer;

try (Writer writer = new FileWriter("output.csv"); CSVPrinter printer = CSVFormat.DEFAULT .withHeader("Name", "Age") .print(writer)) {

printer.printRecord("Alice", 30); printer.printRecord("Bob", 25);}

Recommendations